Refactor/all the things

![](http://media.giphy.com/media/ZOLcVvXARqWk0/giphy.gif)

### Summary

Create different code paths for client and server by splitting the "controller map" into client and server versions.

This means that server views (mostly) just do template compiling, and client side views handle all the svgs. So, when svgs or js are not supported, html elements are still rendered as html on the server === accessibility win!

### Page per things

Now just render in the same way as a dashboard with only one module, except they use a slightly different template in order to handle the extra things they need to render.

Individual tabs have page per things as well. There's an extra layer of depth.

### Tables

Are `visuallyhidden` on dashboards, and display all the time on module pages, so there's no more toggling.

### Image fallbacks

Screenshot-aaS now takes a `selector` parameter which allows fine-grained control of which part of the module is used for an image fallback, so modules like service availability can have multiple images when svgs or javascript are not available.

## Still probably to do

* [ ] Move (at least some of) the templates from `app/common` into `app/server` where they should more appropriately live.
this is gonna make big scrollbars...