Starting to put it all together.
Merge branch 'master' into cache
New function to destroy the cache.
Basic error-prone get and set implemented.
This is probably riddled with race conditions, but it seems like it
mostly works.
Merge branch 'master' into cache