Support for term facets on unmapped fields

Added support for unmapped & partially mapped fields (partially mapped fields may occur when searching across multiple indices where the faceted field is mapped on some and unmapped on others). If a shard doesn't have mappings for a field, the matching documents count on that shard will be added to the missing count for that facet.
Raise search threadpool default size.

The default size used to be 2x availableProcessors which seemed to
be a to lowish value in practice. 3x appeared to be a sweetspot for
most application. The default is now 3 x availableProcessors

Closes #3023
Use Merge Throtteling by default on node level.

Merge Throtteling is one of the most recommended settings and crucial in the
RealTime indexing case. We should set the default to a reasonable setting
that allows folks to index in a production index and don't see large merge
peaks by default. The default is set to 20 MB/sec on the node level.

Closes #3033
Use Recovery Throtteling by default.

To prevent to extensive resource use during recovery we use
recovery throtteling by default to prevent unexpected peak load
on clusters. The default is set to 20 MB/sec.

Closes #3035
During parent uid loading seek to next parent type when child type is encountered.
Relates to #3028
use bytes instead of String as key in versionMap
no need to create a String every time we put or get a value from the version map
remove unused class
reuse version key in an actual operation
no need to compute the hash several times
clean thread locals without needing a wrapper
clean thread locals smartly by identifying "our" classes, and removing them, so there is no need to wrap it in our our clenable values
Corrected a typo and improved the English in a master-discovery error
Corrected English in a shard error message
Routing value not serialized on transport layer.
Closes #3039
Keep backwards compatible with 0.90.0 on the transport layer.
Relates to #3039
Don't apply min frequency smoothing if suggest type is 'always'

Using an automatically detected 'min_doc_freq' if suggest type is set to
'always' is counter intuitive. If we suggest always ignore the frequency and
set threshold frequency to 0 to allow all possible candidates to be drawn if
they are within the given bounds.

Closes #3037
Added simple id loading test.
Relates to #3028
fix package name...
If matching root doc's inner objects don't match the `nested_filter` then the `missing` value should be used to sort the root doc.
Closes #3020
Added support for nested sorting for script sorting and geo sorting.
Closes #3044
Allowing pluggable highlighter implementations.

Currently elasticsearch ships with the plain and the fast-vector highlighter.
In order to support arbitrary highlighters via plugins, you only need to
implement a Highlighter interface and register your implementation in your
plugin at the HighlightModule.

In addition you can also add arbitrary options via the 'options' field in
the highlight request, which can be parsed in the highlighter implementation.

In order to find out how to write add your own analyzer, check out the tests
classes (CustomHighlighterSearchTests and CustomHighlighter).

Closes #2828
Packaging improvements & bugfixes

* RPM: Use the ES_USER variable to set the user (same name as in the debian package
  now), while retaining backwards compatibility to existing /etc/sysconfig/elasticsearch
* RPM: Bugfix: Remove the user when uninstalling the package
* RPM: Set an existing homedir when adding the user (allows one to run cronjobs as this user)
* DEB & RPM: Unify Required-Start/Required-Stop fields in initscripts