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
Merge pull request #131 from stefanpenner/finally

add support for Promise.cast + Promise#finally
Prefer tasks + config inline within project

grunt-microlib was a good idea, but proved to be
more confusing and hard to work with then expected.

Going forward, we can extract more parts of this build 
setup into modules. But the core config, should likely
continue to remain in the project.

Hopefully this improves hackability.

(@stefanpenner / @njj023)
add grunt-cli
bump to latest promise spec version

- update the adapter
- update some reps
hot fix promise-spec on phantom
fixup package.json
tidy-up RSVP.hash
fix all to work if an array element is null
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