prepare for deprecating cache expiration indicator
cache optionally accepts a function to represent time
introduce computeUnlessValid as alias to computeIfAbsent until the concept of validity can be introduced
nothing should happen to a value's validity if time does not advance
set up test and assisting machinery to assert that a prop can become invalid after a given time
structure tests to avoid timestepping shenanigans when not needed
implement computeUnlessValid by adding a metadata item beside every actual stored item
find and findAll require stricter guarantees for data liveness than presence in cache
relax the constraints on storage injection to merely assert that the storage is used at all
delete tests and implementation for deprecated cache expiration feature