Add mongoose json schema plugin
Add mongoose version of the popolo models

These models infer their schema and validations from the mongoose json
schema plugin.
Add mongoose dependency
Expose names in the collection module

This makes it easy to map a model to a collection.
Refactor tests to be independent
Update /:collection route to use models
Generate models based on the collections module

Rather than defining each model individually, iterate over the
collections module and create models based on it.
Refactor app to use mongoose models

Tests are all passing, the code reads much nicer, and we now have the
power of mongoose at our disposal.
Create and delete objects using mongoose

Switch the post and delete routes to using the mongo interface. This
involved some playing around with the mongoose schema to ensure the
correct attributes can be saved.
Move mongoose plugins into separate modules

Give deduplicate slug and search their own home.
Make PUT requests work with mongoose models

We need to delete the body._id because you can't do an upsert with an
_id property on the body.
Run hidden fields middleware for all collection requests
Move search into mongoose models
Remove req.storage property

This is the final piece of the move from pure mongo to mongoose based
models. It has required changing the hidden fields collection property
to collectionName to prevent conflicts with mongoose, but other than
that there are no places using the old Storage class in the
request/response cycle.
Remove Storage class and tests

Storage duties are now handled by mongoose, so we no longer need this
code.
Fix documentation for json-schema plugin
Handle hidden fields more explicitly

Make it clearer that the hiddenFields middleware is being used for the
:collection param.
Tidy up vars and add comment to PUT code
Remove unused mongodb dependency

We're now using mongoose as our mongo ORM, so we don't need/want direct
access to the db.
Swap out $ref in mysociety schemas as well

This was causing an issue where some of the schemas had their $ref
swapped out, and others didn't.