Force merges to not happen when indexing a doc / flush
Today, even though our merge policy doesn't return new merge specs on SEGMENT_FLUSH, merge on the scheduler is still called on flush time, and can cause merges to stall indexing during merges. Both for the concurrent merge scheduler (the default) and the serial merge scheduler. This behavior become worse when throttling kicks in (today at 20mb per sec).

In order to solve it (outside of Lucene for now), we wrap the merge scheduler with an EnableMergeScheduler, where, on the thread level, using a thread local, the call to merge can be enabled/disabled.

A Merges helper class is added where all explicit merges operations should go through. If the scheduler is the enabled one, it will enable merges before calling the relevant explicit method call. In order to make sure Merges is the only class that calls the explicit merge calls, the IW variant of them is added to the forbidden APIs list.

closes #5319
Fix issue where circuit breaker was always reset to 80% upon startup
if there is no master node id, make sure not to fail the cat call, and report x
Nicer failure message when node should not connect to another in nodes API
There are cases where nodes should not connect to another node. For example, client nodes do not connect to other client nodes. When executing a nodes level API, we should have a nicer failure indicating that, and not log it by default, as its not a real failure
optimize the index periodically to make sure we keep the files at bay
[TEST] Replaced RestApiParser assertions with exceptions for better error messages
Display all available endpoints by default at /_cat

Closes #5106
mvel: upgrade to 2.1.9
jackson: upgrade to 2.3.2
Don't throw UOE in PercolateContext#from and #size
Create mapping in PercolatorTests#testPercolateSorting_unsupportedField in create index call instead of lazily via index call.
[TEST] Moving mapping creation to create index call, this will make sure that in the test the mapping is always available on all nodes.
Fixed a bug in date_histogram aggregation parsing

 - pre_zone_adjust_large_interval was not parsed properly
 - added tests for pre_zone and pre_zone_adjust_large_interval
 - changed DateHistogram#getBucketByKey(String) to support date formats (next to numeric strings)
 - added randomized testing for fetching the bucket by key in date_histogram tests
 - added missing "format" support in DateHistogramBuilder

 Closes #5375
Changed debug log to warn for when IW#rollback fails with an exception other than AlreadyClosedException
[TEST] Make sure that a snapshot is completed before trying to modify repository
Use patched version of TermsFilter to prevent using wrong cached results

See LUCENE-5502

Closes #5363
Added more logging
Keep track of the exceptions instead of just flagging that an exception has occured.
Blocking writes on a tribe node creates a "blocks" tribe
fixes #5389
Corrected issue with throttle type setting not respected upon updates
compare with .bytes() instead of ByteSizeValue.equals() in breaker service