Add PStoreRepo
Refactor repository internals

This change pushes the basic logic into BaseRepo. Since all the
the and makes it clear all the real work is delegated to the map.
The base implementation assumes that map can return an array of all
the objects of a given class. This is more inline with how all
the packaged implementations work and giving other a place to insert an
object in their own implementations. Naturally, someone can still
subclass BaseRepo to do whatever is needed.
Remove test from debugging
Prefer Tempfile
Move definition into shared tests