ISPN-3712 Pull in the optional compatibility package so that the CLI upgrade test passes
ISPN-3767 MassIndexer breaks search feature with one node cluster

* Add DegeneratedClusterMassIndexingTest to show that mass indexing does not guarantee all work is fully flushed when MassIndexer.start() returns
* Add BatchBackend flushing to ensure all indexing work is flushed for all indexes
Correct spelling of parameter in DistributedExecuteCommand.perform
ISPN-3786 REST server is treating timeToLiveSeconds=0 inconsistently
Fix test names
ISPN-3422 In non-tx caches, write operations may not be atomic during rebalance

* Replace the ignorePreviousValue flag with a ValueMatchingPolicy enum.
* Set the matching policy to MATCH_EXPECTED_OR_NEW when retrying a
  putIfAbsent(k, value).
* Regular put(k, value) still won't be atomic, because we don't keep the
  previous value around.
* replace(k, expected, newValue) and remove(k, expected) will also be
  retried with MATCH_EXPECTED_OR_NEW.
* Same as regular put(k, value), replace(k, newValue) and remove(k) won't
  be atomic.
* Check the primary owner's response and update the status of the command.
  Only successful commands should be retried if the topology changes.
ISPN-3798 Split ProtobufMetadataManager into separate interface and implementation to ease creation of MBean proxies
ISPN-3048 Eviction needs to be transactional

* Fixed issues with manual eviction to make it more reliable
* Added tests for manual and size based eviction which happens
concurrently with other operations
ISPN-3422 In non-tx caches, write operations may not be atomic during rebalance

* Fix failing test