Upgrade to Lucene 4.9 (closes #6623)
[TEST] suppress sysout checks since CI runs with debug enabled
[TEST] when the test fail, have the exception message as the reason
the test failed but couldn't repro (yet), at the very least, make sure we have the exception message as the reason, can help to track down the failure itself when it happens again
Make sure we don't reuse arrays when sending and error back
We want to make sure recycling will not fail for any reason while trying to send a response back that is caused by a failure, for example, if we have circuit breaker on it (at one point), sending an error back will not be affected by it.
closes #6631
Thread pool rejection status code should be 429
Thread rejection should return too many requests status code, and not 503, which is used to also show that the cluster is not available
 relates to #6627, but only for rejections for now
closes #6629
[STORE] Wrap RateLimiter rather than copy RateLimitedIndexOutput

We clone RateLimitedIndexOutput from lucene just to collect pausing
statistics we can do this in a more straight forward way in a delegating
RateLimiter.

Closes #6625
[TEST] Change es.node.mode default for tests to `local`

In order to speed up test execution we should run in local mode by
default. CI builds will still use network builds all the time.

Closes #6624
Disable explicit GC by default

We don't rely upon GC to cleanup mappedbytebuffers, we unmap them
explicitly on close in lucene. But the JDK has crazy loops with
explicit GCs in exceptional cases to try to force unmapping.

In general we don't want any of our code or library code calling
this method: so its banned in forbidden-apis as well.
Added minimal setup guide for BW Compat tests
[TEST] Testcase for #6639
[Test] testRelocationWhileRefreshing should wait for the first shard to be started
Recovery API should also report ongoing relocation recoveries

We currently only report relocation related recoveries after they are done.

Closes #6585
[Test] add awaitFix to rerouteRecoveryTest
[Test] improved recovery slow down in rerouteRecoveryTest

only change recovery throttling to slow down recoveries. The recovery file chunk size updates are not picked up by ongoing recoveries. That cause the recovery to take too long even after the default settings are restored.

Also - change document creation to reuse field names in order to speed up the test.
[Test] make recovery slow down in rerouteRecoveryTest aware of index size
[TEST] Randomize netty worker and connection parameters
Try and push our system to a state where there is only a single worker, trying to expose potential deadlocks when we by mistake execute blocking operations on the worker thread
closes #6635
Wrap groovy script exceptions in a serializable Exception object

Fixes #6598
add assert for not_found in groovy exception test
Log full groovy exceptions before re-throwing
Add serializable compilation exception for Groovy scripts