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.
At one point I was toying with making canThis return a proper error as a way to clean up error handling in these api methods but then decided against it as I didn't want to make too many changes in this already messy PR.