Cross-instance disposers and disposable promises

This patch makes disposers and disposable promises work across bluebird
instances. The instanceof Disposer check was replaced with a duck
typing check and a new local cast function that preserves the
disposable property and the disposer was added.
fix #271
Fix inconsistent require in API docs

One of the require statements was `require("./js/main/bluebird.js")`
instead of `require('bluebird')`. Changed it to be more consistent with
the rest of the require statements.