optimize onerror and reduce promise creation cost by 20x

- [Promise Creation] rsvp x 10,413,897 ops/sec ±2.52% (69 runs sampled)
- [Promise Creation] rsvp-2.0.4 x 505,280 ops/sec ±2.41% (72 runs sampled)
prefer Promise Construction as declaration
add Promise.cast
Add Promise#finally
perf boosts

- custom pub-sub for propogate state changes instead of event emitter
- minimize closure allocations.
- as we only need to publish once, cleanup subscribers after publish