POC - Feature: Repository abstraction for in-memory datastores.

**-- CAUTION --** This is a POC exploring potential of having support for in memory stores.

Basically we provide abstractions for `InMemoryOperations`. The abstraction allows putting any in memory implementation like plain `Map` underneath.  Support for EhCache has been done to have a second implementation to see if it works for more than one type.

So what this currently allows to derive queries for Map implementation using `SpEL` as well as `Criteria` based ones for EhCache. Both implementations are not finished and only support a subset of what's possible.

Have a look at `GenericInMemoryRepositoryUnitTests` as a base and the concrete ones `MapRepositoryUnitTests` and `EhCacheRepositoryUnitTests` to get an impression.

I'd rather introduce a protected factory method that can be used to create the underlying backing Map implementation.
In addition to that or as an alternative we could accept a Supplier<? extends Map> in MapAdapter ctor that could be asked for a backing map implementation. This would enable us to also use other map implementations.