Refactor ember-testing and unchain async helpers

This PR is meant to replace #2872.

It is a major refactor of the ember-testing package and the main two changes are:

- Un-handled promise rejections now trigger a test failure (uses `Ember.RSVP.configure('onerror')`)
- Introduces `Ember.Test.registerAsyncHelper` which unchains async helpers.

This is backwards compatible (except if someone has unhandled promise rejections, then the tests that might have been passing would now fail).

One concern is whether these changes should be considered new features.  This might be difficult to implement since most of the commits predate the new release cycle, and this is a major refactor not just a feature addition.

cc/ @stefanpenner , @wycats