Code Cleanup for DM E2E Tests

There was a significant amount of reused code that should have been
methodized. I reorganized the methods and methodized some of the code
reusage.
Removes ingestion and retriever's dependency on CouchDB

CouchDB was used at one point to store metadata about a dataset. Since
the evolution of the coverage model, metadata has been accurately
managed by the coverage itself. This patch removes the dependency for an
external metadata repository and the bugs associated with it.

- Patches the integration test bug where a test environment with
  multiple containers would fail if a datastore was deleted by another
container, a hosting container would have no knowledge of the new state
of the datastore and would cause ingestion to fail.

- Reduces some memory consumption in ingestion.

- Removes stochastic last granule retrieval due to the latency between
  couchdb and the convergence of a dataset on the file system.
Fixes bug with DM E2E waiting condition

There was a bug that didn't properly check the extents of a dataset
while looking for an escape condition for a loop, in some circumstances
the loop would not escape.
Merge pull request #443 from lukecampbell/remove_dm_datastore

Remove dm datastore