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... 
Okay, fair enough. But let's suppose the SOR update succeeded, but the cache update didn't. Then there was a concurrent update to both from another thread/client, which succeeded. Why not use the CAS `remove(key, value)` to avoid undoing that action (and having to fault in the value on next access to key)? Same logic applies to the `putIfAbsent` exception handling below, actually.