[promise] New methods for promises

This pull request includes new methods for promises such as `catch`, `Promise.all` and `Promise.race`. These will all be available in native promises. You can even see them in Chrome Canary without any flags:

![capture](https://f.cloud.github.com/assets/347002/1564836/0d16e5d8-5075-11e3-9186-0da71375748e.JPG)

The ES6 Promise API progress can be followed in this repo: https://github.com/domenic/promises-unwrapping/.

I'm waiting for confirmation from tomorrow's TC39 meeting that the API won't change, so this PR is not yet ready to be merged.

#### To Do
- [x] Add tests for all the thrown errors
- [x] Add tests for `Promise.cast` on its own