Experiment/js modules

This PR is an experiment that moves the inline javascript into separate modules. The modules live in `js/modules/{moduleName}.js` and are automatically loaded and initialized when they are included in the markup via `data-module="moduleName"`. The "magic" of loading and initializing the modules happens in `module-loader.js` which is included in the base template.

The modules are intended to be light wrappers around controllers, models, and views that are needed to render or add behavior to a section of the DOM. The only convention is that each module must return an object with an `initModule()` method (see the `js/modules/dummy.js` example). 

Here's how this looks using this approach compared to the normal way of doing it with script tags in the template:

In `my-template.html`:
```html
<div id="content" data-module="main">
...
</div>
```

```html
<div id="content">...</div>
...
<script>
require(['jquery', 'modules/main'], function(MainModule) {
    MainModule.initModule($("#content"));
});
</script>
````

The advantage to this approach is that it enforces a *strict* separation between  the scripts from the markup. I think of this the same way python code is disallowed from django templates, it enforces a certain amount of discipline. The disadvantage is that it's slightly more complex and harder to understand what's going on just by looking at the markup, and potentially slower since the module loader needs to parse the DOM before any modules are loaded and executed.

I'm looking for feedback on whether this is a good approach or not.