Add Promise implementation from ES6 spec.

This is an "as simple as possible" implementation of promises, based
on the January 20, 2014 draft spec.  It does not support long stack
traces or other fancy promise features.

Related ES6 spec issues opened for clarification/correction:
https://bugs.ecmascript.org/show_bug.cgi?id=2513 (Promise.prototype.then)
https://bugs.ecmascript.org/show_bug.cgi?id=2514 (Promise.all/Promise.race)
https://bugs.ecmascript.org/show_bug.cgi?id=2515 (Promise.race)

Test suite added from:
https://github.com/domenic/promises-unwrapping/tree/master/reference-implementation/test
https://github.com/promises-aplus/promises-tests (`promises-aplus-tests`)

Fixes #170.
Fix issues with Promise.all().

The specification for Promise.all() contains some bugs.
Fix these as suggested in
https://github.com/domenic/promises-unwrapping/issues/89

This might need to be revisited if the next revision of the spec
addresses these issues in a different way.
Match spec behavior for Promise.race([]).

See https://github.com/domenic/promises-unwrapping/issues/75
Merge pull request #209 from cscott/promises

Add Promise implementation based on es6 spec.