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.

@stefanpenner @kselden @hjdivad please review :+1: