caching: use composition instead of inheritance.
this solves a lot of annoying problems, like (to me) unexplainable infinite loops under weird
circumstances or memory errors I could not explain. Also added the property to_be_removed to
be able to find out which item *would* be removed next.
use the new property cache_size do differ to the now renamed property cache_maxsize
add ``pragma: no cover`` lines in the caching module