Promises/A+ compatibility and jQuery 1.8.3 version (mostly)

This change adds compatibility with other Promises/A+ libraries.  Large portions of it were copied and pasted directly from https://github.com/wookiehangover/underscore.deferred, which is the other node.js port of jQuery Deferred objects.  I did keep their tweak (described on their page) of the "then" behavior to be more compatible with other promises/A+ libraries and I added back in a couple of removed (deprecated by jQuery) methods in order to preserve backwards compatibility and make sure all tests pass.

I also added some unit tests for interoperability with other "thenable" Promise libraries, including the ones used by Mongoosejs, Q, v8 (they are already built in on Chrome), and any other Promise/A+ library.