Issue 110 : bulkOperations integration tests

Several things to review here :
* the integration tests of course
* some rewrites of the putAll and removeAll methods (with some refactorings too)
Thanks for your input in advance
Since `CacheWriter` has more than just two methods and we only expect one to be called as a result of `Cache.removeAll`, why not configure the mock to throw an exception by default, _except_ when `deleteAll()` is called? Also, the exception message seems like a copy and paste from another place here, but if you follow this advice, you could just simply factor it all out like so:
```Java
private static Answer<Object> throwOnAllExcept(final String expectedMethodName) {
   return new Answer<Object>() {
      @Override
      public Object answer(InvocationOnMock invocation) throws Throwable {
          String invokedMethod = invocation.getMethod().getName();
          if (!expectedMethodName.equals(invokedMethod))  { 
              throw new RuntimeException("Unexpected method called: " + invokedMethod + 
                ", wanted: " + expectedMethodName);
          }
      }
   });
}
```
Then wire it in like so: 
```java
CacheWriter writer = mock(CacheWriter.class, throwOnAllExcept("deleteAll"));
```