Support for yielded promises

I have added support for yielded promises. It should be just as fast for thunks as it was before. Non-thunks will get an extra couple of typeof checks.

I put a few basic tests in test/index.js. It may make more sense for them to go in their own file. To support tests with promises, I added the q module as a dev dependency.