Extended `module` functionality

*Fixes the botched PR #844, which in turn adds the functionality described in #837.*

-Modules now have the functionality of Marionette.extend.
-Upon creation, Modules will fire the `initialize` function, if it exists
-You may also pass a custom class to be instantiated as the Module when adding a new Module to the Application.

It breaks backwards compatibility in its current implementation, and has questionable unit tests.