Update promise

This is an alternate pull for #191 that only addresses to the polyfill itself.

- add Promise.reject
- allow reject on Promise.race
- reference setImmediate from global

All fixes generously provided by @juandopazo