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-4670 Matcher performance test
ISPN-4670 Matcher refactoring

Relocating some responsibility among classes to simplify their collaboration.
ISPN-4670 Replace Iterator of AttributeNode.children with array for faster iteration
ISPN-4670 Do not unsubscribe if executing in a single filter context

The cost of maintaining a map of unsubscribed predicates if high and it can only be amortised if there are many
filters (continuous query scenario). For the single query scenario we prefer not to maintain it at the cost of
having to deal with potential duplicate notification.
ISPN-4670 Use an array to store the FilterEvalContexts instead of a HashMap

The HashMap lookup was a heavy hot spot.
ISPN-4670 Avoid double lookup in known types hashmap