OGM-617 Extracting LocalCacheManager and KeyProvider contracts to allow for a pluggable persistence strategy;

* Making the current behavior an implementation of these contracts
OGM-617 moving classes specific to "cache-per-kind" strategy to dedicated package
OGM-617 Fixing wrong variable names
OGM-617 Implementing the "cache-per-table" strategy
OGM-617 Adding configuration option for cache storage
OGM-617 Raising an exception in case an unexpected key version is encountered during de-serialiation
OGM-617 Adding property for strategy configuration to Ehcache dialect documentation