ControlledCommandFactory.registerControlledCommandFactory() does not actually register the ControlledCommandFactory into the ComponentRegistry

The method is also duplicated into ControlledCommandFactory instead of being reused.
ISPN-2839 Method boolean Cache.replace(K key, V oldValue, V value) (and variants) should guard against null oldValue parameter

Add explicit null check and test case to cover it.
ISPN-2688 BaseDistributionInterceptor and TxDistributionInterceptor do not detect properly if the key needs to be fetched remotely

Fixes TxDistributionInterceptor by doing an extra local lookup if the value returned by method remoteGetAndStoreInL1() is null.
If there was a state transfer in progress at the time TxDistributionInterceptor tried to determine if it needs to go remotely or not the decision might be invalid now and the value might be available locally.
The non-tx case is differrently implemented and is not fixed. Added OperationsDuringStateTransferTest to highlight the issue.
Ensure ConditionalOperationsConcurrentTest worker threads stop at the end
of each test method.
Enabling tests that were disabled due to ISPN-2106 (no longer relevant on 5.2 and tests seem to work)
ISPN-2777 ReplicatedConsistentHash.isKeyLocalToNode(node, key) should return false if the node is not a member yet

Also added some sanity checks to detect illegal usage.
Fix PutForExternalReadTest.testExceptionSuppression and resolve some generics related compiler warnings.
ISPN-2757 ReplaceCommand in REPL mode cluster does not perform any modifications if the entry was not yet transfered during rehashing

 ReplicationInterceptor needs to be smart an if the command is conditional but the affected value is not yet available locally because state transfer did not have the chance to fetch it yet then we should fetch it now.