Introduce mongo storage engine

This commit introduces the `MongoStorageEngine`. This is the start of a
major refactor to separate our the database access layer behind a small
strict interface that is entirely dedicated to data sets.

This commit implements `alive` as this is the simplest method.

All mongo code lives in the `mongo` module inside the
`backdrop.core.storage` package. The goal is to allow multiple storage
engines, each within their own package inside the `storage` package.
Integrate MongoStorageEngine.alive with read/write

This commit introduces the MongoStorageEngine to the read and write api.
It implements the alive method as it is the simplest, smallest thing
that can be integrated.
Implement dataset exists and create on mongo engine

Implement the dataset_exists and the create_dataset methods on the
MongoStorageEngine.

These two methods are the next easiest to implement and integrate as
they are small methods and they are only used from the write API.
Integrate dataset exists and create on write API

Implement the newly created dataset_exists and create_dataset from the
MongoStorageEngine.
Merge pull request #297 from alphagov/refactor-data-layer-step-1

Refactor data layer step 1