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.
If we're not using promises we just invoke |doReturn| directly, no wrapper needed.