Remove hard dependency on jQuery.Deferred quirks

jQuery.Deferred objects are not compliant with the Promises/A+ standard.
Promise#done() is not part of the standard and has different meanings in
different promise libraries.

This fixes the Deferred dependency discussed in #980. It also exposes
Marionette.Deferred as a means to configure the desired implementation.

e.g.
```javascript
Backbone.Marionette.Deferred = Q.defer; // kriskowal/q
Backbone.Marionette.Deferred = when.defer; // cujojs/when
```