Safeguard Cell Re-caching

The testMemoryControls method of the CacheServiceTest was failing due to
anonymous retrieval of a cell, that would then re-cache itself on
finalization immediately before a cache.clear() method.

Depending on when the cell was finalized and cached, the cache may or
may not have been empty (and for the purposes of this memory test,
it would then be completely full).

To fix this, the CacheService now has a retrieveNoRecache method that
functions identically to retrieve, except with the cell's
cacheOnFinalize disabled.

The CacheServiceTest now uses this method where it was previously
failing. The MapDBCache was also modified to remove the hack waiting for
caches to clear, as in fact the issue was erroneous re-caching cells.