Modularize the Datastore classes

Sorry for the big 'ole pull request.  Summary of changes can be found in the services/datastore/TODO.

High level summary:

1. Deduped classes in components/datastore (Dist Datastore filter)
2. Moved Datastore API and Datastore implementation classes to components/datastores/api and implementations
3. Moved DatastoreService API and impl classes to services/datastore/api and services/datastore/impl

Cleaned up dead code, refactored code to support simplification