Promises as first class citizens

*Work in progress / Travis runner*

This PR attempts to make Promises our main way of returning results. I've attempted to map all the old event emitter stuff on top of Bluebird promises, hence the bit hacky code.

Feedback/critique welcome.