Kb/eviction fixes

Here are a few fixes to the eviction algorithms in BoundedConcurrentHashMap, in order of importance.

(1) Fixes a (nearly) endless loop that killed our production servers.
(2-3) Fix minor bugs in cache hit processing.
(4-6) Minor optimizations and code cleanup.
(7) A side effect of this is that it (mostly) separates eviction algorithm and hash map implementations, so its a step towards allowing arbitrary eviction algorithms.

Cheers,
Karsten
@kblees how do we notify listeners now?