Merge pull request #199 from alphagov/add-option-to-dashboard-business-model

Add 4th option to dashboard business-model
Add module to data set relation

A lot of modules have relationships with data sets. Sometimes modules
will not, hence the allowance for null.

I've pushed the dashboard app to be initialized after datasets so that
the dataset tables are already there and the module -> dataset releation
can be created.
Add query_parameters to module

As well as a data set we need the query paramters that the module will
need.
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 serialization to ModuleType
Validate a ModuleType's schema

It would be good to be able to inform the creator of a module type that
the schema they are enforcing for the module options is not valid.
Add endpoint to list and filter ModuleType objects

As with our other filters this is case insensitive.
Add endpoint to create a module type
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
Remove some left over logging
Add serialize function to Module model
Add endpoint to add modules to a dashboard
Add list modules for a dashboard endpoint
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