ThreadPool.EstimatedTimeThread should be set on initialization

Some tests run before the thread is started and thus use 0 as a the current time, which later on leads to big time jumps and thus failures.
Ex. InternalEngineTests.testVersioningReplicaConflict2
Use collectExistingBucket in GlobalOrdinalsStringTermsAggregator.WithHash.

Relates to #5955.
Run tests through forbidden-apis.
Use collectExistingBucket in GlobalOrdinalsSignificantTermsAggregator.WithHash.

Relates to #5955.
Added `reverse_nested` aggregation.

The `reverse_nested` aggregation allows to aggregate on properties outside of the nested scope of a `nested` aggregation.

Closes #5507
Fixed license headers.
Use non analyzed token stream optimization everywhere
In the string type, we have an optimization to reuse the StringTokenStream on a thread local when a non analyzed field is used (instead of creating it each time). We should use this across the board on all places where we create a field with a String.
Also, move to a specific XStringField, that we can reuse StringTokenStream instead of copying it.
closes #6001
[TEST] Replace execute().actionGet() with get()
[TEST] (RecoveryPercolatorTests) Don't stop the master node and always use the client of the master node
debug log of receiving a cluster state from another master could be erroneously logged

Added trace logging to MinimumMasterNodesTests.multipleNodesShutdownNonMasterNodes
Support empty properties array in mappings
closes #5887
function_score parser should throw exception if both functions:[] and single function given
use fail() instead of assertTrue(false) to fail test
add better message if function is "boost_factor"
remove duplicate code and make error messages const