Promise polyfill

This adds `Promise` as a possible `setImmediate` polyfill. Resolved promises always get their thenables executed at the end of the current iteration of the event loop. They are never invoked immediately. This allows us to bypass the whole postMessage hack.

JsPerf comparison: http://jsperf.com/setimmediate-polyfill-vs-use-of-promise/3

Note that what computer it is run on seems to have an effect on how fast it is. This computer is a beast, so the difference between postMessage and using a Promise is not particularly huge (18.9% more ops/sec). On one of my workplace computers, [the difference was very significant](https://cloud.githubusercontent.com/assets/1258798/2837761/f6a921ca-d022-11e3-8d18-fce491e3083c.png). (Note that the colors are swapped in that screenshot compared to the JsPerf link above). On my laptop Promise turned out to be much slower in FF29, but faster in Chrome. The laptop was unplugged though, so it might be that Firefox is trying to save some battery life.

Tested in the only browsers I had on hand:
- Chrome 18, and 34
- Firefox 26, 27, and 29
- Internet Explorer 11
- Chrome Mobile 34

Edit: Re-ran the JsPerf on my laptop with it plugged in. It now shows a 15.8% increase in ops/sec in FF29.