Remove hard dependency on jQuery.Deferred quirks

jQuery.Deferred objects are not compliant with the Promises/A+ standard.
Replaces Promise#done() (not part of the standard) with Promises#then()

This fixes the jQuery.Deffered dependency discussed in #980.
It also exposes Marionette.Deferred as a means to configure the desired
implementation.

e.g.
```
Backbone.Marionette.Deferred = Q.defer; // kriskowal/q
Backbone.Marionette.Deferred = when.defer; // cujojs/when
```