Change components from an array to a map.

Makes extending a whole lots easier.
Added a failing test for ellipses bug.

If you have more than one module on a page say... a dashboard and one of the modules is configured to use ellipses it will do a select for all '.tick's on the page.

Meaning that many modules will get concated when they shouldnt...
Fixed problems where we were doing global lookups (DANGER!) instead of local to the view
We don't need to make these vars.
New user-satisfaction bar-chart.

Takes the breakdown of a user-satisfaction score and displays in a bar chart.

Renders the bar on a 'reset' (ie when we populate the collection) from user-satisfaction-graph
User satisfaction graph view.

Takes a single stat, completion rate and bar chart and adds them to a new user-satisfaction-graph view.

Tests.
Enable user-satisfaction graph.
Refactored the remaining components() methods to use a map.

Arrays just don't make sense for components...
Style the bar like a journey.
Remove the yaxis from the breakdown.
Moved this to a client side test as it was failing the server side tests.
jshint error after refactoring the components into maps.
Trying to fix failing tests on travis.

Phantom is not playing nicely with browser widths.
This makes me sad but I can't see how to make the default viewport width for grunt-jasmine-node any bigger.

It's a totally valid test :(
Merge pull request #541 from alphagov/feature/user-satisfaction-graph

User satisfaction graph
Show tables on module pages.

As part of the module design changes, we want to show tables on
module pages by default.

Add tests for the floatHeaders method in the table view.
Add JSON and PNG links to module pages.

These aren't styled yet.
Separate graph and table rendering.

Wrap all module elements in a container: give graph its own element.

Always render image fallback inside <noscript> tag.
Render table within module view, not within graph view.

This means that we can position the table alongside the "more
info" section of the module, rather than above it. It also
means that we can render tables for non-JS users, and render
tables on the server rather than the client.

Update tests.
Set valueAttr in the module controller.

We should set valueAttr consistently here, rather than doing it differently
for individual modules. We use visualisationOptions to pass valueAttr
through to the view.

Also, use appendTo not insertAfter to insert our HTML elements.

Update tests.