ISPN-3335 JMX statistics for Queries do not work after adding new classes to SearchFactory

In Infinispan we use SearchFactory reconfiguration when adding new classes. This process actually builds a new SearchFactory behind the scenes which should preserve all state and config of the old one, plus the new added classes.
Unfortunatelly this does not work correctly due to HSEARCH-1461. The statistics are lost on each reconfiguration. Also the the status of Statistics.isStatisticsEnabled is lost.

This is worked around by constructing a new MBean statistics implementtion, with identical interface. The new implementation accumulates its own statistics counters and gathers current data from the current Statistics object of the SearchFactory.
ISPN-3537 Custom interceptor with Position.LAST set programmatically doesn't work
ISPN-3498 Cannot construct org.infinispan.util.KeyValuePair as it does not have a no-args constructor

* an JBossMarshaller is built under the hood for each TestObjectStreamMarshaller instance
* users need to call TestObjectStreamMarshaller.stop explicitly
ISPN-3537 Custom interceptor with Position.LAST set programmatically doesn't work
ISPN-3781 Memcached server should fail to start when expiration is configured
Documentation: correct misuses of "an"
Documentation: correct misuses of "it's"
Documentation: correct misuses of "an"
ISPN-3779 Refactor the SingleKeyNonTxInvocationContext to not inherit from an abstract invocationcontext
ISPN-3779 No need to use ContextFlag encoded in a byte anymore
ISPN-3779 Remove unused method
ISPN-3779 Remove more unused methods from EntryLookup
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