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.
My reason for not doing that (returning one of our error classes from canThis) is that it would couple canThis and our error handling. Ideally, I'd like to see canThis become it's own module, I know it's super specific to our needs at present but I believe it could be abstracted.