Rewrite everything, essentially

Concepts are much clearer now. We ha a builder class
that can create datastore instances, which then manage
their own data.
Add tests.