Replace when with bluebird

Currently has two commits, one for the bulk of the tests conversion and one for the rest.  Will squash if/when this is ready.
Changing from `}, function () {` to `}).catch(function () {` changes the behaviour of the error handling in a subtle, and I think undesirable way. 

We'll now get a NotFoundError from any error in the mail generation and sending code, whereas using a comma, we'd only get the NotFoundError if `findOne` fails.