Refactor data layer step 2

This depends on #297 

This implements the `get_last_updated` and `empty_dataset` methods of `MongoStorageEngine`. This also introduces a new `NewDataSet` class that is built against the `MongoStorageEngine`. Both the old and new data set classes are integrated with methods being moved over one by one. This is so that changes can be integrated step by step rather than all in one go. When all methods are moved over to `NewDataSet` the old one will be removed and the new one renamed.