ISPN-2974 DeltaAware based fine-grained replication corrupts cache data, if eviction is enabled

* Add unit tests to highlight the issue with DeltaAware and eviction in replication mode.
* Made the test generic enough to be able to also test in local mode with the option of using passivation instead of eviction; the test can also use AtomicHashMap and FineGrainedAtomicMap instead.
* The eviction + replication test cases fail for DeltaAware, AtomicHashMap and FineGrainedAtomicMap.
ISPN-2974 Fix replication of delta updates for DeltaAware and AtomicMap in both eviction and passivation scenario

These fixes allow the DeltaAware and AtomicMap tests to pass but the fix is not yet complete for FineGrainedAtomicMap:

* PutKeyValueCommand must use Flag.DELTA_WRITE if the value is a DeltaAware.
* AtomicHashMapProxy must use Flag.DELTA_WRITE instead of Flag.SKIP_CACHE_LOAD if eviction is enabled.
* ApplyDeltaCommand must use Flag.DELTA_WRITE and ensure the flags are properly externalized.
* ApplyDeltaCommand must properly set the inherited 'key' field so methods getKey() and getAffectedKeys() return a valid value (ISPN-2996).
* ClusteredCacheLoaderInterceptor.forceLoad() must also check if this is a delta write (similar to ClusteredActivationInterceptor).
* ClusteredActivationInterceptor and ClusteredCacheLoaderInterceptor must correcly determine the primary data owner in REPL mode instead of assuming the coordinator (ISPN-2988).
ApplyDeltaCommand getDeltaAwareKey() vs getKey() refactoring

* Method getDeltaAwareKey() is just an alias for the inherited getKey() so it can be removed
* Class ApplyDeltaCommand.DeltaCompositeKey needs an externalizer
ISPN-3001 DeltaAwareCacheEntry.getLifespan() and getMaxIdle() return 0 and cause instant expiration

These should actually return -1 for infinite lifetime.
Otherwise LocalDeltaAwareEvictionTest.testFineGrainedAtomicMap(), ReplDeltaAwareEvictionTest.testFineGrainedAtomicMap() and ReplDeltaAwareEvictionTest.testFineGrainedAtomicMap2() fail because the entry is already expired when it is fetched by the loader.
ISPN-3056 FineGrainedAtomicMap updates are lost on some cluster nodes when eviction or passivation is involved

* CacheLoaderInterceptor does not properly handle ApplyDeltaCommand; it should call loadIfNeeded() to ensure data is properly fetched from loader if it was evicted from data container. The loaded entry must be wrapped using EntryFactory.wrapEntryForDelta() instead of wrapEntryForPut().
* CacheStoreInterceptor.StoreModificationsBuilder must visit ApplyDeltaCommands and ensure special handling for DeltaAwareCacheEntry to store the yet uncommmited changes rather than the value because the context entries are not yet committed at this point due to the order of interceptors.
* EntryFactoryImpl.wrapInternalCacheEntryForDelta must ensure the created DeltaAwareCacheEntry wraps a mutable context entry rather than an immutable internal entry that does not do anything on commit().
* DeltaAwareCacheEntry must merge the deltas and mark the wrapped entry as changed BEFORE asking the wrapped entry to commit.