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.
Merge pull request #4675 from spenceralger/update_spec_doc_urls

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
Open files with encoding='utf-8' in release script
Removed needless TestRiver used in RiverTests

DummyRiver can be used instead, no need for TestRiver
Add 0.90.10 to master
Expose min/max open file descriptors in Cluster Stats API

Also changes the response format of that section to:

```
 "open_file_descriptors": {
      "min": 200,
      "max": 346,
       "avg": 273
 }
```

Closes #4681

Note: this is an aggregate of 3 commits in the 0.90 branch
Cutover to Guava's Longs.compare.
ClusterStats tests should allow for open file descriptors to be -1 (which they are on windows)

Also made some other small tweaks for that case.
ClusterStatsTests.testValuesSmokeScreen: replace greaterThan with greaterOrEqualThan