Extracted Cache class from CacheableRequest

If two cache objects are opened from the same directory, when items are added to either one, they will become out of sync. When the caches are written to disk, one will overwrite the other. Therefore, there can be only a single cache for each directory. Rather than limit the number of CacheableRequest objects, I thought it would be better to limit only the number of caches since that is the limiting factor.