Test loader attribute of the model

The attribute is a hidden weak reference, so it requires some test. Maybe this
could be abstracted more generally at some point.
Implement pickling of models

The weak loader attribute of the model class was preventing the instances from
being pickled. This is fixed here.
Create backends for the loader

The loader requires some backend to save and load model data. This has been
implemented as a simple in-memory backend copying data.
Handle backend in loader

The loader must use the backend to actually store objects
Improve example model class in persistence test

Now it handles weak references and the backend interaction properly
Add a file-based backend using binary pickle files

Individual model objects are pickled as files when saved and restored from
disk. Also the general backend test was adapted, since mocks do not play nicely
with pickling.
Merge branch 'topic/persistence'