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.
Fix API.md typo 

Line 1670: Removes the extra "is" from the sentence 

Register a node-style callback on this promise. When this promise is is either fulfilled or rejected, the node callback will be called back with the node.js convention where error reason is the first argument and success value is the second argument. The error argument will be null in case of success.
Merge pull request #289 from codeNgJon/patch-1

Fix API.md typo
Add a prepublish script

I couldn't find a documented release process so apologies if this has already been discussed.

I would like bluebird to define a "prepublish" script that runs the default build so that `npm install petkaantonov/bluebird#{commit-ish}` will work correctly. Despite being somewhat unintuitive, this is the recommended/only way to accomplish that goal.
grunt-contrib-watch dependency making Travis build fail

Added dependency
Update API.md

Can bluebird guarantee that the resolver function is called synchronously or not?  Document the guarantees.
Merge pull request #290 from grncdr/patch-1

Add a prepublish script
fix; lower attachment count

This fixes the issue discovered in #296 by lowering the number of
interactions a promise has to have before it's cleaned up.
mod; only adjust queueGC count
Merge pull request #294 from alexanderkjeldaas/patch-1

Update API.md wrt guarantees given by "new Promise"
Merge pull request #292 from askhogan/master

grunt-contrib-watch dependency making Travis build fail
Make sure all data is cleared
Specify saucelabs version range
Add nodejs guard for nodejs test
Release v2.3.1
Add P alias
Release v2.3.2