equals()/hashCode() & tests for ByteArrays to avoid materializing a
full byte[].

Fixes #5435
Also wrap p/c queries in CustomQueryWrappingFilter in the fquery qparser, because they otherwise p/c queries may work incorrectly.
Tidy significant terms warnings from Jenkins
Add an option to force _optimize operations.

When forced, the index will be merged even if it contains a single segment with
no deletions.

Close #5243
[Doc] doc updates for date histogram interval

Close #5308
Enforce query instance checking before it wrapper as a filter

We have the default QueryWrapperFilter as well as our custom one while
our wrapper is explicitly marked as no_cache such that it will never
be included in a cache. This was not consistenly used and caused several
problems during tests where p/c related queries were used as filters
and ended up in the cache. This commit adds the QueryWrapperFilter
ctor to the forbidden APIs to enforce the query instance checks.
Improve resource handling in Parent/ChildQuery
Add slop to prefix phrase query after parsing query string

This fixes a regression introduced by #5005 where the query slop
was simply ignored when a `match_phrase_prefix` type was set.

Closes #5437
[TEST] Reduce iterations in RandomAllocationDeciderTests
Improve exception handling in HttpDownloadHelper
Remove PMD clone warning

Removed PMD clone warning on class ElasticsearchMergePolicy
[TEST] Fix CircuitBreakerServiceTests from failing due to rounding errors
[DOCS] Documented gateway.local.auto_import_dangled

Relates to #4996
BulkProcessor process every n+1 docs instead of n

When you set a BulkProcessor with a bulk actions size of 100, it executes the bulk after 101 documents.

```java
BulkProcessor.builder(client(), listener).setBulkActions(100).setConcurrentRequests(1).setName("foo").build();
```

Same for size. If you set the bulk size to 1024 bytes, it will actually execute the bulk after 1025 bytes.

This patch fix it.

Closes #4265.
[Tests] RecoveryWhileUnderLoadTests - made sure background indexing threads are closed on errors.

Fixed minor logging discrepancies introduced with randomized shard count.
Added logging to recoverWhileUnderLoadWithNodeShutdown
Added logging ElasticsearchIntegrationTest.allowNodes to indicate what nodes were excluded.
recoverWhileRelocating's shard setting were potentially ignored (depending on key order in hashmaps)
[TEST] add mapping to MoreLikeThisActionTests to make sure doc mapper exists on all shards / nodes
Add _cat/plugins endpoint

If we want to have a full picture of versions running in a cluster, we need to add a `_cat/plugins` endpoint.

Response could look like:

```sh
% curl es2:9200/_cat/plugins?v
node component                        version   type url                                   desc
es1  mapper-attachments               1.7.0       j                                        Adds the attachment type allowing to parse difference attachment formats
es1  lang-javascript                  1.4.0       j                                        JavaScript plugin allowing to add javascript scripting support
es1  analysis-smartcn                 1.9.0       j                                        Smart Chinese analysis support
es1  marvel                           1.1.0      j/s http://localhost:9200/_plugins/marvel Elasticsearch Management & Monitoring
es1  kopf                             0.5.3       s  http://localhost:9200/_plugins/kopf   kopf - simple web administration tool for ElasticSearch
es2  mapper-attachments               2.0.0.RC1   j                                        Adds the attachment type allowing to parse difference attachment formats
es2  lang-javascript                  2.0.0.RC1   j                                        JavaScript plugin allowing to add javascript scripting support
es2  analysis-smartcn                 2.0.0.RC1   j                                        Smart Chinese analysis support
```

Closes #4824.
Count latch down if sendsPing throws exception

if the async sendPingsHandler throws an unexpected exception the
corresponding latch is never counted down. This might only happen
during node shutdown but can still cause starvation or test failures.
MulticastChannel returned wrong channel in shared mode

If the shared channel is used a wrong refrence was returned and
close calls couldn't find the listener since it go never registered
in that instance.
[TEST] Make sure that the facet fields exist.