A caching store will hold on to some objects for some time, but may fail to store them.
This is separated from the main Cache interface so that methods return an object that can set control parameters on a cache, without granting read/write access to the cache itself.
Cache's may be enabled or disabled.
The cache methods do not need to be synchronised.