ISPN-3807 Cache the result of HQL query parser to be reused

Use a local cache with expiring entries to store the result of the HQL parsing and reuse it
if same query is executed.
ISPN-4685 Lucene Directory Externalizers not used on server deployment
ISPN-4669 Load additional realm roles only for realm principal
ISPN-4186 Re-enable functional test query.distributed.MultiNodeDistributedTest
ISPN-4165 Re-enable functional test query.distributed.MultiNodeDistributedTxTest
ISPN-2727 Re-enable functional test query.distributed.MultiNodeLocalTxTest
ISPN-2727 Re-enable functional test query.distributed.MultiNodeReplicatedTxTest
ISPN-4048 Re-enable functional test query.persistence.SharedCacheLoaderQueryDistributedIndexTest
ISPN-4048 re-classify test query.persistence.SharedCacheLoaderQueryIndexTest
ISPN-4599 Refactor existing tests
ISPN-4599 Rename tests to better match their goal
ISPN-4599 No longer expect all tests to set exclusive_index_use to false
ISPN-4599 Register a backend ErrorHandler in some tests to verify the backend is not throwing exceptions
ISPN-4599 The elected indexing master node should stay stable (pick the coordinator) and allow for transitionaly states
ISPN-3938 AdvancedAsyncCacheLoader.process() concurrency issues

Simplify ExecutorAllCompletionService to track the tasks itself instead of
using an ExecutorCompletionService.