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.
I get the feeling there's a more efficient way to do this than one at a time.