[REST tests] Randomized REST path chosen if more than one is available with current parameters

Previously we would always take the same path if more than one was available
Deprecate document _boost

Fixes #4664
Change the default recycler type.

Recycling is not thread-local anymore by default but instead there are several
pools of objects to recycle that threads may use depending on their id.
Each pool is protected by its own lock so up to ${number of pools} threads may
recycler objects concurrently.

Recyclers have also been refactored for better composability, for example there
is a soft recycler that creates a recycler that wraps data around a
SoftReference and a thread-local recycler that can take any factory or recyclers
and instantiates a dedicated instance per thread.

RecyclerBenchmark has been added to try to figure out the overhead of object
recycling depending on the recycler type and the number of threads trying to
recycle objects concurrently.

Close #4647
add host name and host address to DiscoveryNode
this will allow to easily access them regardless of the transport address used, and allow to remove reverse lookup of host names from ip address extracted from inet transport address where needed
- fixed terms aggs ordering by sub metric agg - introduced MetricsAggregator to enable access to metrics values without creating buckets

fixes: #4643
Disabling allow_explicit_index breaks bulk
fixes #4668
Disabling allow_explicit_index breaks bulk
grr, formatted by mistake...
Add Strings.substring() that handles short strings.
Handle node id shorter than the usual randomBase64UUID.

Fixes #4572 (half of it...)
Aggregations: clean-up comparisons.
remove bloom from clear cache API, add id_cache
Updated the documentation urls in the rest api spec.
Multi data path config can cause a shard to be perceived as corrupted
Multi data path config support writes a file to a data location based on the available size (by default). There is a Lucene file called segments.gen that has the same name, and only in that case, we need to make sure we alway write it to the same data location, otherwise, the index will have multiple segments.gen files, and the shard can seem to be corrupted.

The message if this case happens is that segments_xxx file was not found, in which case, a find for segments.gen can yield multiple files. Deleting the segments.gen files will cause the shard to recover properly (as its an extra protection layer to resolve the segments header by Lucene)

Make sure the segments.gen file is writtne to the same directory every time
fixes #4674
Add new option `min_doc_count` to terms and histogram aggregations.

`min_doc_count` is the minimum number of hits that a term or histogram key
should match in order to appear in the response.

`min_doc_count=0` replaces `compute_empty_buckets` for histograms and will
behave exactly like facets' `all_terms=true` for terms aggregations.

Close #4578