Use Bluebird for promises

Fixes #20