Refactored promises usage:

1) Used a Promise subclass instead of patching and wrapping all the time
2) Updated RSVP to fix a subclassing bug
3) Updated RSVP to support a unified onerror callback that can be used
   instead of patching the `.then` on promises.
Only catch promise errors after injecting helpers
Ember.Test Helpers no longer need to be chained
fix and simplify concurrent wait calls test
Ember-testing should not cause a test failure  when aborting transitions
Introduce registerAsyncHelper which allows for unchained async helpers

All helpers registered with `Ember.Test.registerAsyncHelper` can be called
without being chained.  These helpers will not run until all previous
async helpers are done.  All async helpers after this helper will not run
until this helper is done.

```javascript

Ember.Test.registerAsyncHelper('clickPost', function(app, title) {
  click('.post-title:contains('+ title +')');
});

//... in your test

visit('/');

clickPost('My Post');

andThen(function() {
  equal(find('h1').text(), 'My Post');
});

```
Merge pull request #3557 from teddyzeenny/refactored-test-promises-new

Refactor ember-testing and unchain async helpers