WIP: Improve perf of createAlternanteImpl

- Creates return-type specific return functions that are determined at
  creation time
- Splits off promise handling to it's own function. Overrides that use promises
  must indicate so when creating the override with the usesPromise param.
It's possible we could cache this array in the closure as well (at the cost of more memory consumption).