Issue 31 — Part 1

Quite some changes, but I think this releases #52 #39 (at least when I'm done with this one here on #31) and #75 for others to work on.
Bunch of tests to be added for #52 #39 and #75 as well... 
I think it actually should be either nor `remove`s but instead some `obliterate` method. 
Think of a value being in the `Cache`'s `Store` but can't be deserialized, and hence not compared against... it wouldn't be able to auto heal. It's basically part of issue #52 to figure what the proper thing to do is... 

Also your logic sorts of _only_ applies to `putIfAbsent`. In case a previous value was actually there, and you don't know whether you updated, you _have to remove_ the mapping from the `Store` in order to make sure it heals itself.