Change migrations to depend on MongoStorageEngine

This is a hack and migrations should be removed or fixed properly.

This change marks all existing migrations as deprecated as they don't
really make so much sense with the new model.
Remove backdrop.core.database and DataSet

This is quite a broad change that cleans up the previous commits. It
includes:

- Remove backdrop.core.database module, it is now completely
  superseded by backdrop.core.storage.mongo
- Remove DataSet class from backdrop.code.data_set, it is now completely
  superseded by NewDataSet (renaming will happen in a later commit)
- Remove query execution methods from Query object, they are now handled
  by NewDataSet. Moving query and response modules into core will happen
  in a later commit
- Raise a backdrop error when data set creation fails rather than
  bubbling up the mongo error
- Refactor storage engine tests so that they can be shared between
  multiple storage engines. They essentially become a suite of tests
  that verify a storage engine complies to the interface.
- Remove *loads* of database tests. There were a lot of duplicates,
  relevant ones were ported to either test_mongo.py or
  test_data_set_integration.py