Add support for Zones

Can we keep this closer to the es6 promise constructor?

E.g.
```
PromiseWrapper.create(function(resolve, reject) { ... })
```

The point in giving the `resolve` and `reject` callbacks into the closure is that if the closure has an error the promise can automatically be rejected. There has been a big discussion in the community that this callback style of creating a promise is actually the better version...