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
Fix page-per-thing tab view
Implemented new style tabs on g-cloud dashboard
Update availability modules to use new tabs module
Convert configs from old availability module to new tab module
Remove no longer used tab view
Prevent overwriting this.el in `View#initialize`

Overwriting `this.el` explicitly inside `View#initialize` can have unexpected side effects, especially if the view has been instantiated with `el` as a jQuery wrapped object.

Preventing this allows Backbone's default `el` management logic to apply, and happiness to prevail.
Make code better.
Allow modules inside tabs to have default attrs

Modules inside tabs have their elements created for them in the visualisation template so do not have id, class and other attributes added by Backbone by default. These need to be added manually.
Prevent tab content from rendering on server at all

This method was making tabs render on the server but without an element to render into, so it was pointless. Prevent that unnecessary processing.
Make cucumber tests work with tabbed modules