Provide Marionette objects as individual UMD modules

#### [Play with it here](https://github.com/jmeas-test/test-umd-modules)

Resolves #1332 

This allows for users to pick and choose the Marionette classes they want to use. This updates our build system to transparently bundle each class as a UMD module.

```sh
# build everything, including the components
grunt build
```

Usage:

```js
// Pull in just what you want to use
var ItemView = require('marionette/lib/item-view');
var Region = require('region');

// And if you're a power user who wants to access Marionette
// directly, for, say, `triggerMethodOn`
var Mn = require('marionette/lib/core');
```

:tada:

=====

Caveats of the playground repo above:

– I don't test Behavior/Behaviors classes
– I *only* test initialization. So if a dependency is used in a particular function, that error won't be caught

Please take a look through all of the source files to see if I missed any dependencies. Do remember that the helper methods like TriggerMethod, and the Error class, are all loaded when you load in the core.
This still seems extraordinarily easy to break to me.

Would it be at all possible to have the UMD defined in one place:

```js
function defineModule(deps, factory) {
  // ...
};
```

and then in the files:

```js
defineModule(['underscore', 'backbone', './core', 'backbone.wreqr', './region-manager', './callbacks'], function(_, Backbone, Marionette) {
  // ...
});
```

Or even some fancy comments in the source that gets built.

```js
// @require 'underscore' as _
```

What I'm currently seeing here is just gross, and I'm willing to bet that someone down the road forgets to update it and then we're forced to make a patch release.