require Promise constructor to be new'd
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
Merge pull request #132 from stefanpenner/perf

Perfs
Add instrumentation.

```js
function listener (event) {
  event.guid            // guid of promise
  event.childGuid       // guid of child promise (for chained via `then`)
  event.eventName       // one of ['created', 'chained', 'fulfilled', 'rejected']
  event.detail          // fulfillment value or rejection reason, if applicable
  event.label           // label passed to promise's constructor
}

RSVP.Promise.on('created', listener);
RSVP.Promise.on('chained', listener);
RSVP.Promise.on('fulfilled', listener);
RSVP.Promise.on('rejected', listener);
```

Events are only triggered when `RSVP.Promise.instrument` is true, although
listeners can be registered at any time.
Merge pull request #137 from hjdivad/inspection

Add instrumentation.
Restory some minor perf regressions.

_guid that was created via string concat + increment was abit costly.
Applying the string concat later during event trigger seems better.

Promise.instrument not being defined also caused some slow down, so lets
just define it off the bat.
small OCD
fixup failed test