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
Add smoketest support for published packages

the build_release.py tool now also downloads and verfyfies the
released packages from S3. It checks integrity based on the sha1
checksums and runs the smoketest against the specs in the current branch.
Disable SegmentReader ram usage by default even if -ea is provided
Make doc lookup in geo_shape filter and query consistent with terms lookup.

The `geo_shape filter and query` option in geo_shape filter and query has been replaced with the `path` option, which allows these filter and query to fetch shapes from within objects as well.

Closes #4486
[DOCS] Changed `shape_field_name` to `path` in geo_shape filter documentation.

Relates to #4486