Create (fake-able) DataStoreFactory
Instead of "racing" whether a new thread in unit-tests calls
FakeDataStore::self() or DataStore::self() first, we create a
factory class that can be replaced by a fake factory during test
initialization, avoiding any race conditions.