[TEST] Add basic Backwards Compatibility Tests

This commit add a basic infrastructure as well as primitive tests
to ensure version backwards compatibility between the current
development trunk and an arbitrary previous version. The compatibility
tests are simple unit tests derived from a base class that starts
and manages nodes from a provided elasticsearch release package.

Use the following commandline executes all backwards compatiblity tests
in isolation:

```
mvn test -Dtests.bwc=true -Dtests.bwc.version=1.2.1 -Dtests.class=org.elasticsearch.bwcompat.*
```

These tests run basic checks like rolling upgrades and
routing/searching/get etc. against the specified version. The version
must be present in the `./backwards` folder as
`./backwards/elasticsearch-x.y.z`
[TEST] Add test for accessing _score in scripts
[TEST] Fix test cluster naming

This commit renames `TestCluster` -> `InternalTestCluster` and
`ImmutableTestCluster` to `TestCluster` for consistency. This also
makes `ExternalTestCluster` and `InternalTestCluster` consistent
with respect to their execution environment.

Closes #6510
[DOCS] Fixed is/if typo in Api Conventions doc
[TEST] wait for ongoing recoveries to finish. Flush fails on shards otherwise.
[TEST] verify all threads created by node and client have the node name
closes #6516
Use ordinals for comparison in GlobalOrdinalsStringTermsAggregator.buildAggregation. Closes #6518
[Benchmark] Fix TermsAggregationSearchBenchmark: The `ordinals` execution mode doesn't exist anymore.
don't check .metadata folder for tabs and nocommits
[TEST] Use test.bwc.version if compatibility version is not present
[CLIENT] Remove unnecessary intermediate interfaces

Client, ClusterAdminClient and IndicesAdminClient had corresponding
intermediate `internal` interfaces that are unnecessary and cause
a lot of casting. This commit removes the intermediate interfaces
and uses the super interfaces directly.

This commit also adds Releaseable to `Node` and `Client` in order to
be used with utilities like try / with.

Closes #4355
Closes #6517
Changed the type of field docCounts to IntArray instead of LongArray, because a shard can't hold more than Integer.MAX_VALUE a LongArray just takes unnecessary space.

Closes #6529
update docs to reflect how default write consistency with 1 replica behaves
Docs: tidied configuration.asciidoc
Update stemmer-override-tokenfilter.asciidoc
percolator: fix handling of nested documents

Nested documents were indexed as separate documents, but it was never checked
if the hits represent nested documents or not. Therefore, nested objects could
match not nested queries and nested queries could also match not nested documents.

Examples are in issue #6540 .

closes #6540
closes #6544
Aggregations: Added percentile rank aggregation

Percentile Rank Aggregation is the reverse of the Percetiles aggregation.  It determines the percentile rank (the proportion of values less than a given value) of the provided array of values.

Closes #6386
[TEST] Disable automatic refresh to prevent unintended field data warming of the the _parent field.
[TEST] Only use the clients from the node.
Also send Refresh and Flush actions to relocation targets

Currently we send relocation & flush actions based on all assigned ShardRoutings. During the final stage of relocation, we may miss to refresh/flush a shard if the coordinating node has not yet processed the cluster state update indicating that a relocation is completed *and* the relocation target node has already processed it (i.e., started the shard and has accepted new indexing requests).

Closes #6545