Change: Use of promises to interoperate with A+

This is a substantial change to the library. Formerly, this package
used a non-compliant promise library which prevented it from working
with async functions from other libraries. With the update to
Deferred.js this library can now interoperate with other A+ compliant
promises.

To support this, all use of callback/errback has been replaced with
uses of then. Likewise, the deficiencies of the library created by
its use of callback/errback (specifically code bloat) has been stripped
down by using then chaining.

Overall the behaviour and interface of the package has not changed.
The one notable exception to this is the former 'engine' sub-package
which has been removed. Unfortunately, this constitutes a backwards
incompatible change in the API so the major version must be bumped.

Signed-off-by: Kevin Conway <kevinjacobconway@gmail.com>
Change: Tests to use 'thenable' promise interface

The tests used to use the callback/errback methods of the
Deferred.js promises. Now they use the A+ then interface.

Signed-off-by: Kevin Conway <kevinjacobconway@gmail.com>
Add: More examples to the docs

Signed-off-by: Kevin Conway <kevinjacobconway@gmail.com>