LocalDataStore serialization

This adds localdatastore serialization.

Data is serialized to file when LocalDataStore.save() is called, and data is automatically deserialized when a new instance is created.

This is kind of dangerous, because it could create two different sets of data in memory. But because DataManager is the only thing that will ever instantiate this, it is therefore controlled and safe.

Also added a plethora of tests, and some mock data. And some equals() and toString().

It's a relatively large pull request.