Highlight fields in request order

Because json objects are unordered this also adds an explicit order syntax
that looks like
    "highlight": {
        "fields": [
            {"title":{ /*params*/ }},
            {"text":{ /*params*/ }}
        ]
    }

This is not useful for any of the builtin highlighters but will be useful
in plugins.

Closes #4649
[TEST] Don't stop master node.
[TEST] Just start two nodes
Aggregations: Fix ReverseNestedAggregator to compute the parent document correctly.

Close #6278
Nested: Make sure queries/filters/aggs get a FixedBitSet when they expect one.

Close #6279
[TESTS] Randomly disable the filter cache.

Close #6280
Limit guava caches to 31.9GB

Guava's caches have overflow issues around 32GB with our default segment
count of 16 and weight of 1 unit per byte.  We give them 100MB of headroom
so 31.9GB.

This limits the sizes of both the field data and filter caches, the two
large guava caches.

Closes #6268
[TESTS] Fix test bug in SimpleValidateQueryTests.
[TESTS] Fix test to use index-level doc IDs instead of segment-level doc IDs.
[TESTS] Left-over from 14420d7c4e15df9b565b50ef5beab797f756c3ac.
Added `top_hits` aggregation that keeps track of the most relevant document being aggregated per bucket.

Closes #6124
Improve error when mlockall fails (closes #6288)
Explicitly clean up fielddata cache when clearing entire cache
[SPEC] Added the `percolator_format` URL parameter to the "Percolate" API spec
Set the sortValues on SearchHit post aggregation instead of during the reduce.
Fix MatchQueryParser not parsing fuzzy_transpositions
[Test] make sure we test writeTo(Channel) in BytesReference
also introduce proper randomization of content in the bytes
[Test] make sure to close the file at the end of the test
Docs: Adding Hebrew analyzer

Closes #6306
[DOCS] fix typo