[Transport] possible NPE during shutdown for requests using timeouts

Closes #6849
significant terms: infrastructure for changing easily the significance heuristic

This commit adds the infrastructure to allow pluging in different
measures for computing the significance of a term.
Significance measures can be provided externally by overriding

- SignificanceHeuristic
- SignificanceHeuristicBuilder
- SignificanceHeuristicParser

closes #6561
Analysis: Improve Hunspell error messages

The Hunspell service would throw a confusing error message if more than
one affix file was present.  This commit distinguishes between the two
error cases: where there are no affix files and when there are too many
affix files.

Also implements lazy dictionary loading, which was used in the tests
but not implemented.

Closes #6850
[TEST] For connection rules make TransportAddress the identity instead of DiscoveryNode.

For unicast ping the DiscoveryNode identity is based on its id, which in that stage is a dummy value, this breaks any rule in the mock tran
However the TransportAddress is a valid value in unicast ping and all other places, so that is a better alternative.

Closes #6836
Test: add test case verifying updating merge IO throttle settings works

Closes #6842
[Test] testSingleNodeWithFlush should wait for yellow

O.w. it can restart a node before all primaries are started , leading to a red state down the road...
Indexed Scripts/Templates: Add support for storing/deleting/getting scripts/template from an index.

This change allow elasticsearch users to store scripts and templates in an index for use at search time.
Scripts/Templates are stored in the .scripts index. The type of the events is set to the script language.
Templates use the mustache language so their type is be "mustache".
Adds the concept of a script type to calls to the ScriptService types are INDEXED,INLINE,FILE.
If a script type of INDEXED is supplied the script will be attempted to be loaded from the indexed, FILE will
look in the file cache and INLINE will treat the supplied script argument as the literal script.
REST endpoints are provided to do CRUD operations as is a java client library.
All query dsl points have been upgraded to allow passing in of explicit script ids and script file names.
Backwards compatible behavior has been preserved so this shouldn't break any existing querys that expect to
pass in a filename as the script/template name. The ScriptService will check the disk cache before parsing the
script.

Closes #5921 #5637 #5484
Docs: Update query-string-syntax.asciidoc

Closes #6853
Aggregations: Added an option to show the upper bound of the error for the terms aggregation.

This is only applicable when the order is set to _count.  The upper bound of the error in the doc count is calculated by summing the doc count of the last term on each shard which did not return the term.  The implementation calculates the error by summing the doc count for the last term on each shard for which the term IS returned and then subtracts this value from the sum of the doc counts for the last term from ALL shards.

Closes #6696
Now shows error for whole aggregation all the time but only shows term error when show_term_doc_count_error is true
Added version checking to serialisation and changed doc count error to show -1 for cases where we cannot estimate the error
update to docs
Renamed error field in JSON response
bucket.showDocCountError() now throws an exception if showDocCountError is false
fix to serialisation and other minor fixes
error now completely calculated in the reduce phase to avoid confusion using the working value before the reduce phase
Fixed test
Tests for doc count error