Support storage and migrations using custom thenables

Don't require storage and migration implementations to
return Bluebird promises - any object with a then(...)
method should do.
Merge pull request #5 from rpaterson/promise-interop

Support storage and migrations using custom thenables