DataManager, LocalDataSource & Associated stuff

I think that the DataManager & LocalDataSource stuff is working well enough that we can integrate it at least. Still needs more work, but the basic methods seem to be working correctly, if not in the most efficient way possible.
The LocalDataStore needs a UserContext to know how to store the items. In fact, LocalDataStore takes a UserContext in it's constructor.
The actual LocalDataStore in the DataManager is (re)created whenever setUserContext() is called on the DataManager.