First cut

Just stores each object in its own file like:

    data/0
    data/1
    data/2

No transaction rollback, containers or sensible id generation yet.

I've included a bunch of different convenience methods for different types of I/O:

* stream (basic sequential IO)
* channel (advanced sequential IO and random read)
* whole-object-as-a-string (mainly because it's handy for unit testing, might remove it in a later patch as it could encourage memory abuse)