Added asynchronous module initializers.

This pull request adds asynchronous module initializers using jQuery Deferred objects.

It adds three new properties to Marionette.Module:

##### `_deferReady`
This is a jQuery Deferred object intended for internal use by Marionette.Module.

##### `ready`
This is a jQuery Promise object which will be resolved or rejected based on the result of any defined asynchronous initializers. It is intended for use as a "public" property.

##### `_initializerPromises`
This is a Marionette.Promises instance (see below)

---

It adds one event and corresponding triggerMethod:
* `ready`

The ready event will be triggered when the ready promise has been resolved.

It adds one new method:
* addAsyncInitializer

This adds an asynchronous initializer. The callback function should return a promise which will be resolved or rejected when complete. If it returns any other value it will be marked as resolved, but in that case a standard initializer should be used anyway.

---

It adds one new Marionette object
* Marionette.Promises

This is modelled very closely on Marionette.Callbacks, and indeed there may be some way to combine their functionality, but I didn't want to mess with such a core dependency. Essentially it's the same, but the run method adds the return value of the callback to an array, and returns a new promise. When all items in the array are resolved, the promise will be marked as resolved.

This pull request allows application code (other modules, routers, etc) to wait until all asynchronous module dependencies have resolved before continuing. Eg.
`MyModule.ready.done(function(){ /*do something*/ });`
or
`MyModule.on('ready', fn)` 
The downside to the event-based approach is that only handlers bound _before_ the event will be notified. By using the `ready` promise object one can use `MyModule.ready.done(fn)` without caring whether the module has just started, or was started and resolved long ago.

Additionally, using the promise objects with jQuery.when can define multiple module dependencies
Eg.
`$.when(FirstModule.ready, SecondModule.ready).done(function(){ /* do something */ });`