Remove unnecessary epilogue restrictions and corner cases.
Remove unnecessary epilogue restrictions and corner cases.

- Allow injected values to be roots of epilogues
- Allow n-ary values to be injected
- Always generate an epilogue function if it's requested.
- Simplify EmitEpilogue interface to hide indexes and calling convention
  details from the caller.

This simplifies the logic in the reduction emitter somewhat.
