Add: A+ compliant then method

This method adds a callback/errback pair to the deferred and
produces a promise that is resolved with the return/throw value
of the callback/errback pair. This allows chaining of async
operations such that the code appears more sequential.

Signed-off-by: Kevin Conway <kevinjacobconway@gmail.com>
Change: Deferred resolution to be A+ compliant

The deferred resolution now supports accepting other A+ compliant
thenables. The resolution behaviour for accepting any value is now
compliant with the A+ specification.

Signed-off-by: Kevin Conway <kevinjacobconway@gmail.com>
Add: A+ compliance tests

These tests ensure that the code meets my understanding of the
A+ specification.

Signed-off-by: Kevin Conway <kevinjacobconway@gmail.com>
Change: NPM version to 4

The bump in major version is likely not necessary as there are no
truly backwards incompatible changes with the introduction of A+
compliance. However, the resolution behaviour of deferreds _did_
change which makes me want to bump the major version in the off
chance that something relies on, for example, the resolution _not_
handling other thenables.

Signed-off-by: Kevin Conway <kevinjacobconway@gmail.com>
Add: A+ tests to the browser runner

Signed-off-by: Kevin Conway <kevinjacobconway@gmail.com>
Change: Test module name to prevent conflict

The test package was named the same as the source package. This can
create conflicts in the browser when running tests.

Signed-off-by: Kevin Conway <kevinjacobconway@gmail.com>
Merge pull request #7 from kevinconway/a_plus

Implement A+ specification compliance