Use an RWMutex instead of a Mutex, making Get a read operation only (this slightly changes the eviction behavior: lookup doesn't completely expunge an expired item, but the janitor still will at the next cleanup.) Also, use the same RWMutex in Load and Save (thanks, Alan Shreve)
Don't keep the read lock after traversing the items map (before saving to the io.Writer) in Save
Use an RWMutex in the cache-equivalent map tests now that the cache uses one
Change the names of the MutexMap benchmarks to RWMutex to clarify the changes to the map benchmarks and the cache itself
Fix race condition writing items out in Save() by copying the cached items map