Share module rendering and merge view options

We are going to want to share the rendering of modules beyond just the
dashboard controller. The new tab module is built around the idea of is
containing another level of module definitions.

We want the options we pass through to render ending up on the view such
that we can pass through useful properties like, which element to render
into from elsewhere.
Module should expose its visualisation

We need to be able to get at the visualisation contained by a module and
to include such implementation specific code such as
thi.viewInstances['.visualisation'] seemed like madness.
Add TabView

TabView manages the tabs, elements for the different modules to render
into and binds events to swtich between the tabs on click.
Add a TabModule and link it in controller_map

Create a TabModule which uses TabView and the shared module rendering
code to populate the TabView.

We require controller_map as it would create a circular dependency if
placed in the define as TabModule -> ControllerMap -> TabModule.
Styling to work with new tabs
Add new tabs to no-realistic-dashboard
Lint fixes
Added a basic schema for tab modules to allow tab modules to generate json stubs
Listen to model.change event for tab change

Listening to change events on the model allow multiple disparate modules/views to perform tasks on tab click and have awareness of tab state without needing to create a coupling between them.
Fix unit tests