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