Add 4th option to dashboard business-model

This change mimics alphagov/spotlight@b9ec3720ca154d45c782c5a48751feb7f1b8c008.
Merge pull request #199 from alphagov/add-option-to-dashboard-business-model

Add 4th option to dashboard business-model
Allow querying org types by name

This is case insensitive because we didn't want the case where we ended
up with different org types purely based on the case of their names.
Filter org nodes by name and abbreviation

If both parameters are given they AND not OR. We have chosen to make the
queries case insensitive so we don't end up with nodes differing by
case.
Add script to drop all stagecraft tables

Drop the entire 'public' schema and then recreate it.
Merge pull request #201 from alphagov/organisation-querying

Organisation querying
Merge pull request #200 from alphagov/add-module-to-data-set-relation

Add module to data set relation
Merge pull request #203 from alphagov/add-tools

Add script to drop all stagecraft tables
Document drop-tables.sh script
Merge pull request #204 from alphagov/document-drop-tables

Document drop-tables.sh script
Only cache a dasbhoard when published

We do the same for datasets as when working on a dashboard it is
frustrating to wait for the cache to invalidate when you make a change.
The assumption when a dashboard is unpublished should also be low load
to the url.

http://tools.ietf.org/html/rfc7234#section-5.2.1.4
Merge pull request #202 from alphagov/only-cache-dashboard-when-published

Only cache a dasbhoard when published
Merge pull request #205 from alphagov/add-a-module

Add and list modules for dashboards
[#75970906] Add view to create a new dashboard

Add an endpoint to Stagecraft to allow a user to create a dashboard
with a POST request.
Move is_uuid to validation library

It needs to be used by the dashboard app
Handle dashboard failure modes

Also introduces a govuk signon test decorator.
Extend JSON serialiser to use serialize() method

If an object is a UUID, return a string representation of it.

If the object still can't be serialised, call its serialize() method.
This is useful when nesting Link models inside dashboards, for
example.
Store links when creating a dashboard

When a user POSTs an array of links, store them on the dashboard
model.
Respond to duplicate dashboard slugs with a 400

Standardise errors from the dashboard endpoint by always returning
JSON.
Add a serialize method to a Dashboard