Add handling of promises returned from callbacks

This enables chaining of multiple asynchronous tasks.
Merge pull request #17 from pivotal-brian-croom/returning-a-promise

Add handling of promises returned from callbacks