Dashboard models

Basic dashboard model, not including modules or organisations

Most fields are pretty standard fields using djangos orm, but links are
a separate model. There is only one transaction link per dashboard, but
multiple other links can be added

The serialize method will return a dictionary that can be jsonified in a
format spotlight expects
Merge pull request #191 from alphagov/feature/dashboards-model

Dashboard models
Update the version of PyHamcrest

Everything still seems to pass our tests and it adds some new matchers
(hello calling/raises)
Migrate models into sub-directory

The dashboard model is pretty massive and the thought of adding modules
to the file too gives me the heebies. I've broken the dashboard model
out to its own file so that we can break up all the models needed by
this app.
Add Module and ModuleType to dashboard app

Dashboards' have many modules and we need to represent them. Each module
has a type which enforces the schema for the options JSON blob. This
JSON blob for options exists so that we do not need a table for each of
the module types. We are not going to be querying into this field as
part of an app, only ad-hoc so a JSON field should be perfect.

The two main requirements for modules are that no two modules can have
the same slug on the same dashboard and that a module's options should
validate against its type's schema.

Slug uniqueness test has a transaction.atomic wrapper on the create
because of the way django deals with transactions:
http://stackoverflow.com/questions/21458387/transactionmanagementerror-you-cant-execute-queries-until-the-end-of-the-atom
Merge pull request #192 from alphagov/feature/module-model

Module models
JSONSchema lib is now required always

This library is now used to validate the options passed into a module.
Merge pull request #193 from alphagov/feature/module-model

JSONSchema lib is now required always