Use / upgrade the global Promise object

A local Promise object is more trouble than it's worth for several reasons:

- it might result in unexpected behavior when promises returned by the library
  behave differently than those returned elsewhere
- there could potentially be memory leak issues with multiple bluebird
  instances (need to investigate)