Make sure process and setImmediate are defined before calling them
Add #catch method
Construct promises from the Promise class
Have throw use #catch
Test #catch throwing and rejecting
Properly defer, without blowing nextTick stack.
Have Promises be instanceof Promise
Resolving a promise makes it "fulfilled", not "resolved"
Name the constructor's parameter
Static methods aren't past tense
`null` is not an object
Use a method to trap a thenable's #then
Allow a promise to be (resolve) created with a promise
Implement .cast
Move private methods under public ones.
No need to return from a contructor.
ES6 compliance
Merge pull request #2 from cloudspace/es6

Es6
Refactor internal state to remove excess closures.

A HUGE speed improvement.
Cleanup code.