[TEST] added ExternalTestCluster that allows to run tests against an external cluster

All the ordinary test operations happen based on the ImmutableTestCluster base class and are executed via transport client. Will be used especially for the REST tests once migrated to the standard randomized runner.

Added new httpAddresses method to ImmutableTestCluster to be able to retrieve the http addresses to connect to for the REST tests. Both versions will look inside the cluster to figure out which nodes are available for http calls and their addresses.

The external cluster is used as global cluster if the tests.cluster system property is available. The property needs to contain a comma separated list of available elasticsearch nodes that will be used to connect to the cluster (e.g. localhost:9300,localhost:9301).

Only a subset of the integration tests can currently be run successfully against the external cluster, for more precision the ones that don't modify the cluster layout (don't require cluster() functionalities but rely only on immutableCluster()). Also at least two data nodes are required otherwise the ensureGreen calls cannot succeed.

Closes #5630
[TEST] delegate to the original transport
[Test] Speed up RandomAllocationDeciderTests
[Test] Speedup RecoveryWhileUnderLoadTests to run with less documents unless tests.nightly=true
[Test] Run intensive suggest tests only if nightly=true
[Test] Speeup FieldData tests and remove unnecessary @Repeat annotations
[Test] Speedup UpdateTests#testConcurrentUpdateWithRetryOnConflict
Add a BackgroundIndexer class to RecoveryWhileUnderLoadTests and use it.

Also change the document distribution a bit between the tests
[Test] allow tests to reuse a singel index across tests

This commit speeds up aggregations tests dramatically since they all
rely on the same index structure. Here we can safe a large amout of time
to not recreate the index for each small test.
Moved BackgroundIndexer to a top level class. Moved waitNumDocs to ElasticsearchIntegrationTestBase.

Update RelocationTests to use the above and unified testPrimaryRelocationWhileIndexing & testReplicaRelocationWhileIndexingRandom into a single randomized test.
[BUILD] Allow to set tests memory via the commandline
[DOCS] "F" is not valid false value for boolean type
Fail the engine/shard when refresh failed
When refresh failed, it would fail due to a serious issue in the shard (mainly corrupted index). Fail the engine in that cause, which will cause the shard to fail. The reason why its not only on CorruptedIndex failed is that any type of failure seems to be relevant here to fail the shard
closes #5633
[TEST] Fix BulkTests#testThatInvalidIndexNamesShouldNotBreakCompleteBulkRequest - randomBoolean() doesn't always return true
add test for ElasticSearchPostingsFormat
[TEST] use assertAcked when creating indices
ignore index if it's not in the cluster state and it's in the drop indices set

Closes #5643
[TEST] Expect all shards to fail if full refresh failed
Throw EngineClosedException if engine is closed

Currently we throw misleading exception in acquireSearcher
if we try to acquire while we are failing the engine. We should
throw an EngineClosedException instead.

Relates to #5633
Enrich exception message if searcher can not be aquired

This commit also moves the log message after the ensureOpen() call
to only log an error if it's really an erro condition.