Issue 41 - cache event stuff

My parting gift to Ehcache 3.0 (for now) - cache event implementation (issue #41).

Some things left to be resolved later: 
* `Cache.Entry` delivered with cache events doesn't support create/access times or hit rate. This is documented in https://groups.google.com/forum/#!topic/ehcache-dev/N_UTJKIlCNI
* `Store.compute*` methods that do not complete normally due to an exception may still result in event delivery to listeners. This is to be addressed as part of #165.
* Eviction isn't covered by existing unit tests. TBD possibly after #151 is merged in.
* Exceptions thrown by listeners aren't dealt with; deferring until after #52 is finalized.
That is indeed what it is saying. Not that you can't figure it out, but this works:
```
    public boolean equals(Object other) {
      if (other instanceof EventListenerWrapper) {
        EventListenerWrapper l2 = (EventListenerWrapper)other;
        return listener.equals(l2.listener);
      }
  
      return false;
    }
```