Moved the Store interface to a real key/value store

I think this is missing something - it looks like the absolute/relative file path handling is broken (not by this change) but I can't see how this code works properly for files.