Issue 47

Added getAll(), putAll() and removeAll() implementations with reader and writer support. The code in the cache layer should be versatile enough so that the store layer has a lot of flexibility on how it wants to load the keys.
Yes, entries are needed by the function too as it needs to know about the 'old' values to compute the 'new' values that it returns. This basically mimics the compute() function where both key and old value are passed and new value is returned.