Cast promises

reqwest is an example of a library that has its own promise implementation, which is not compliant with the Promises/A+ spec.

In the reqwest HTTP adapter, we should cast reqwest promises. However this means [polyfilling `window.Promise`](https://github.com/jakearchibald/ES6-Promises) or bringing in a dependency such as Q.

I’m hesitant to do this because it means we are bundling a large dependency, and the consumer could have other dependencies that also bundle Q, leading to duplicate code. Thenceforth is why I believe front-end engineers prefer to re-invent the wheel instead of adding dependencies. I don't want to fall into this category with this lib. What are your thoughts?

For what it’s worth, there are few other good request libraries.
I think maybe this should be `resolve` rather than `cast`?