Shared cache

needs review, and some more package discussion, but it is very functional and would like to merge sooner than later.
Do we need to add a session id here to prevent unwanted deletions due to race conditions?  Since we're using a centralized cache, is it possible that user A may delete user B's file before user B has a chance to download the file?