Fix transient settings assertions in ElasticsearchIntegrationTest

We missed to fail if transient settings were modifed in the test since we
compared against persistent settings.
Already loaded SimpleIdReaderCache should be reloaded when a new `_parent` has been introduced.

Closes #4595
Relates #4568
IdCache shouldn't implement Iterable
Fixed SimpleIdCache#clear() to not invoke onRemoval twice, which can happen in rare cases.
Add NodeVersionAllocationDecider that prevent allocations that require forward compatibility.

Today during restart scenarios it is possible that we recover from a node that
has already been upgraded to version N+1. The node that we relocate to is
on version N and might not be able to read the index format from the node
we relocate from. This causes `IndexFormatToNewException` during
recovery but only after recovery has finished which can cause large
load spikes during the upgrade period.

Closes #4588
Pass correct number of expected shards to assertion
Fixed issue where the parentTypes set would be updated when a new parent type is being added or removed during a refresh, which would have lead to concurrency issues.
plugin manager: new `timeout` option

When testing plugin manager with real downloads, it could happen that the test run forever. Fortunately, test suite will be interrupted after 20 minutes, but it could be useful not to fail the whole test suite but only warn in that case.

By default, plugin manager still wait indefinitely but it can be modified using new `--timeout` option:

```sh
bin/plugin --install elasticsearch/kibana --timeout 30s

bin/plugin --install elasticsearch/kibana --timeout 1h
```

Closes #4603.
Closes #4600.
Add cache stats to cat/nodes.

Closes #4543.
The `fields` option should always return an array for json document fields and single valued field for metadata fields.
Also the `fields` option can only be used to fetch leaf fields, trying to do fetch object fields will return in a client error.

Closes #4542
Do not start packages on installation

The reason to not start packages on installation is to allow to configure
them before starting up (setting heap, cluster.name etc)

Also the documentation was updated in order to show, which statements need
to be executed.
In addition, these statements are also printed out when the package is
installed, depending on whether chkconfig, system or update-rc.d is used.

Closes #3722
Fix typo in JavaDoc -- s/note/not
Fix potential infinite loop in double wildcard processing

Fixes #4610
pass on node seed to the node level settings in TestCluster
Expose `simple_query_string` flags in `flags` parameter
Default the circuit breaker limit to 80% of the maximum JVM heap
use trace logging to print RoutingNodes in test
Renamed old setIgnoreIndices to setIndicesOptions.
Added missing indices options to rest spec and rest actions.
Simplify indices stats API

Note: This breaks backward compatibility

* Removed clear/all parameters, now all stats are returned by default
* Made the metrics part of the URL
* Removed a lot of handlers
* Added shards/indices/cluster level paremeter to change response serialization
* Returning translog statistics in IndicesStats
* Added TranslogStats class
* Added IndexShard.translogStats() method to get the stats from concrete implementation
* Updated documentation

Closes #4054