Add repository information to docs

This adds the apt and yum repo information to the setup docs.
Use a List of shards per shard ID rather than a set.

The shards in the set are mutated after they are added to the
set such that the hashcode doesn't fit anymore. For this reason
this used an identity hashset before but the downside of this is
that the iteration order is not deterministic. We can just use a list
since shard removal is a very rare action and the size of the list is
very small such that iteration is fast.
Allow to enable / disable bloom filter loading on an index
Allow to have a new index level setting index.codec.bloom.load (default to true), that can control if the boom filters will be loaded or not. This is an updateable setting, that can be updated on a live index using the update settings API.

Note though, when this setting is updated, a fresh Lucene index will be reopened, causing associate caches to be dropped potentially.

closes #4525

Note, this change also disables the returning lucene ram usage stats, due to a bug in Lucene, relates to #4512
Failed search on a shard tries a local replica on a network thread
When a search on a shard to a remove node fails, and then replica exists on the local node, then the execution of the search is done on the network thread. This is problematic since we need to execute it on the actual search thread pool, but can also explain #4519, where the get happens on the network thread and it waits to send the get request till the network thread we use is freed (deadlock...)
fixes #4526

note, re-enable the geo shape fetch test, this fix should solve it as well
Stricter parsing of aggregations.

 - Only one aggregation type is allowed per aggregation definition.
 - Return an error in the parsers when an unknown field is encountered.

Close #4464
[DOCS] Added the official PHP client to the community page.
[DOCS] Documented index.codec.bloom.load for #4525
[DOCS] Corrected bloom loading docs
[DOCS] Fixed community links to official clients
Counting shards was wrong if one of the indices was in the RED status

Closes #4528
Reverting back to 0.90.7 config/templates loading behaviour

Closes #4511
Added unit tests for ClusterIndexHealth and ClusterHealthResponse

Relates to #4528
add randomized multi data path nodes tests
remove unused test env var from TESTING doc
make sure all integration tests use ElasticsearchIntegrationTest
- move ClusterSettingsTests to ElasticsearchIntegrationTest
- remove InternalNodeTests, we already have separate plugin tests that verify it
fix lower case for windows tests
fix forbidden API on lower case...
Optimize restore source JSON serialization

Don't print "restore_source":  null if restore source is null, omit entire line instead
Added asserts to test validation failures presence in ClusterHealthResponse response
Fix loading templates in config/ directory

The fixes introduced in #4235 and #4411 do not take into account, that a
template JSON in the config/ directory includes a template name, as opposed
when calling the Put Template API.

This PR allows to put both formats (either specifying a template name or not)
into files. However you template name/id may not be one of the template
element names like "template", "settings", "order" or "mapping".

Closes #4511