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

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