Rename 'perform' to 'start'
Store callbacks as an array, not separate properties

Makes removing the callbacks once they're used far more efficient.
Optimize _promiseThen() for returned native promises
Notify in next turn for fulfill()/reject()

* Prevents stack overflows for really long promise chains
* Having the callback fire in a future-turn from the function that resolves seems more predictable
legendary@0.5.0