Start implementing a file cache

Currently the cache is only stubs and every access opens a file again.
Flesh out the cache a bit, still a no-op
Handle cache hit
Implement simple caching

This loads the data once so to refresh it you need to restart the
server, this will get fixed.