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.
- Updates overrides that use promises