Support promises

We were using this in a project at [omnibus-app/sunlight-congress-api](https://github.com/omnibus-app/sunlight-congress-api), and made some breaking changes in that fork. I've re-forked it and added support for promises. I've also replicated all the examples in `demo/run.js` using promises, and appended them to that file. These changes should be entirely non-breaking.

Thanks for making this, it is immensely useful!