Highlighting: Plain highlighter to use analyzer defined on a document level when available.

At the moment plain highligher only uses an analyzer defined for on the type
level. However, during the indexing stage it is possible to define analyzer on
per document level, for example mapping '_analyzer' to another field, containing
required name. This commit attempts to make sure that highlighting works
correctly in this scenario.

Closes #5497
[BUILD] Remember to use AtomicReader.addCoreClosedListener when upgrading to Lucene 4.9.
Added plugins to .gitignore

Since plugins should never be committed to the core codebase and it is useful to be able to add plugins to the development environment adding plugins folder to the .gitignore file will stop it from appearing in the unstaged changes
Serialization: Add support for Byte to the XContentBuilder.

Close #6127
Mustache: Ensure internal scope extrators are always operating on a Map

Mustache extracts the key/value pairs for parameter substitution from
objects and maps but it's decided on the first execution. We need to
make sure if the params are null we pass an empty map to ensure we
bind the map based extractor

Closes #6318
Recycling: change the default type of the page recycler to CONCURRENT instead of SOFT_CONCURRENT.

This default type has been inherited from its ancestor, the (non-paged) recycler whose memory
usage was unbounded and required soft references to make sure it could release memory eventually.
On the contrary, the page cache recycler memory usage is bounded so we could remove soft
references in order to remove load on the garbage collector.

Note: the cache type is already randomized in integration tests.

Close #6320
[TESTS] There might be several live `BigArrays` instances at the same time.
[DOCS] Document filtered query strategies.
[Tests] assert indexRandom's deletion of injection dummy docs find them
[Test] added search trace logging to IndexActionTests.testAutoGenerateIdNoDuplicates
Test: Python doesn't support atomic groups in regexes. Removing from cat.recovery
Upgrade to netty 3.9.1
closes #6331
[TESTS] Add get snapshot status test for partial snapshots
[DOCS] Java 7 is required since 1.2.0
Aggregations: Fixed bug in top_hits aggregation to not fail with NPE when shard results are empty.

The top_hits aggregation returned an empty InternalTopHits instance with no fields set when there were no result, causing reduce and serialization errors down the road. This is fixed by setting all required fields when a there are no results.

Closes #6346
Aggregations: added pagination support to `top_hits` aggregation by adding `from` option.

Closes #6299
Docs: Tidied percolate.asciidoc
[BUILD] Fix compile error
Have a dedicated join timeout that is higher than ping.timeout for node join
Using ping.timeout, which defaults to 3s, to use as a timeout value on the join request a node makes to the master once its discovered can be too small, specifically when there is a large cluster state involved (and by definition, all the buffers and such on the nio layer will be "cold"). Introduce a dedicated join.timeout setting, that by default is 10x the ping.timeout (so 30s by default).
closes #6342
Aggregations: Take the 'from' into account when getting a fetched hit (InternalSearchHit). Hits before the 'from' are included in each shard result.