bluebird: external dispatcher support

### CHANGE SUMMARY
* Added Promise.setExternalDispatcher which takes in a function which will be used to dispatch tasks instead of using internal dispatcher.