Promisified everything.

Using a promises & bluebird to avoid so many callbacks.

This has some new ideas in it. You don't need to accept this pull request if you don't want to. It's mean to illustrate some newer ideas in promises.

Specifically, it's important to note that some of the `then` calls (of which `spread` is basically a member) are themselves returning promise objects. The next `then`calls that get chained onto the end actually wait on the promise returned from the previous `then` call to complete.

We'll discuss these ideas more as we continue to use promises. If you're interested in exploring them more, try out [Promise It Won't Hurt](https://github.com/stevekane/promise-it-wont-hurt).