Tighten dashboard JSON schema

- Slugs can only contain lowercase letters, hyphens and numbers
- Some fields now have a minimum and maximum length. The maximum
  length is defined as the currently longest string that field
  contains, rounded up to the nearest 10 or 100.
Validate departments and agencies against schema

Pedantry.

- The Deputy Prime Minister's Office is abbreviated DPMO
- Ministry of Justice is MOJ with a big O
- Same for Department for Transport (DFT)
- But not Department for Education (DfE)
- The Environment Agency is not a department

These points are taken by looking at departments sites, as well
as the style guide.

Please note that I have left the Land Registry as an agency, even
though it is a department. This is a bug that I've opened separately:

https://github.com/alphagov/spotlight/issues/755
Fix bug in module schema

This bug meant that schema was evaluated to an empty object, and
when you validate anything against an empty object it succeeds.

Therefore, our KPI and completion rate modules were not being
validated.

Add a vague "test" for that.
Remove dashboard-strapline property from JSON

I can't see anywhere this is used.
Tighten schema for modules

- Add maximum lengths to text fields
- Validate slugs against a pattern
- Ensure that new modules must appear in module.json
Update schema README
Remove module-schema.json from spec directory

This has been superceded by the schema/ directory.
Merge pull request #757 from alphagov/tighten-json-schema

Tighten JSON schema
Push spotlight server response times to statsd

Wrap in morgan logging middleware because then the stats are automatically fired on request end, and with some useful metadata.

Middleware is declared at the top of the stack to ensure response times include *all* processing that is performed.
Move error template into server code

Stop using requirejs plugins to fetch and compile.
Move templates for dashboard and page-per-thing into app/server

These templates are only rendered on the server-side so should live in the appropriate place.

Fix bug in mustache template renderer so that it actually works instead of just guessing at the API and hoping.
Support rendering templates without any data
Remove requirejs from template loading in govuk view
Move prototypes template into server directory

Remove requirejs
Move module template into app/server
Move module templates into app/server directory

Add some view structure around them to DRY out the code
Move last template in app/extensions into app/common

So there's only one place to look.
Change task to copy gov uk template to point to new location

The template moved into the server directory, but the grunt task to do this did not get changed to reflect this
Changed `link` property to `href`

Mustache was recognising `link` as being a function on a string (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/link) so was calling it, and so had a weird embedding of a `<a href="...">...</a>` into the href property.

Changing to href resolves this.
Lint