Support specifing score query on highlight.

This is useful if you want to highlight terms not in the search query or
you want sort highlighted snippets based on another query.

Closes #3630
introduced support for "shard_size" for terms & terms_stats facets. The "shard_size" is the number of term entries each shard will send back to the coordinating node. "shard_size" > "size" will increase the accuracy (both in terms of the counts associated with each term and the terms that will actually be returned the user) - of course, the higher "shard_size" is, the more expensive the processing becomes as bigger queues are maintained on a shard level and larger lists are streamed back from the shards.

closes #3821
added javadocs for builder and cleaned up support for `shard_size` on terms & terms_stats facets
[DOCS] Fixed a typo in indices.get_templates
improve thread pool rejection message
Migrate from Trove to Hppc.
Also clear handlesText
Changed nested filter example to use an inner bool filter instead of a bool query, to demonstrate the usage of a filter rather than a query.
Support the `has_child`, `has_parent`, `top_children` queries (and filters) in other apis than just search api.
Migrate SearchContext.Rewrite to Releasable. All the parent child queries are now implemented as Lucene queries and the state is kept in the Weight.
Completely disable caching for `has_child` and `has_parent` filters, this has never worked and it also can also never work. The matching docIds are cached per segment while the collection of parent ids is top level.

Closes #3822