Internal: made it possible to disable the main transport handler in TransportShardSingleOperationAction

TransportShardSingleOperationAction is currently subclassed by different transport actions. Some of them are internal only, meaning that their execution will take place only in the same node where their parent execution took place. That means that their main transport handler doesn't need to be registered, the only transport handler that's needed is the shard level one.

Added `isSubAction` method (defaults to false) to the parent class that tells whether the action is a main one or a subaction, used to decide whether we need to register the main transport handler.

Closes #7285
Internal: auto create index to keep around headers and context of the request that caused it

Closes #7331
Transport: Refactor guice startup

* Removed & refactored unused module code
* Allowed to set transports programmatically
* Allow to set the source of the changed transport

Note: The current implementation breaks BWC as you need to specify a concrete
transport now instead of a module if you want to use a different
Transport or HttpServerTransport

Closes #7289
Upgrade to Netty 3.9.3.Final
closes #7328
Upgrade to Jackson Smile 2.4.1.1
This fixes issue 18 in Smile (https://github.com/FasterXML/jackson-dataformat-smile/issues/18)

closes #7327
Fix NPE in SnapshotsService on node shutdown

Fixes #6506
Snapshot checksum verification

Adds automatic verification of all files that are being snapshotted. Closes #5593
Test: Prevent use of transport client when testing changed transports

This makes sure, that the transport client is not used, as it would use
a different than the configured local transport mechanism in this test.
[TEST] UnicastBackwardsCompatibilityTest should not copy internal node settings to external nodes

Recent test failures triggered by #7289 were caused by this, simply because internal node settings (transport type key) that are not supported by the external older nodes were copied to them by mistake.
Internal: adjusted internal requests visibility from public to package private
opened up getting the template name from DeleteIndexTemplateRequest
Geo: fixes circle radius calculation

This change fixes the creation circle shapes o it calculates it correctly instead of essentially using the diameter as the radius.  The radius has to be converted into degrees but calculating the ratio of the desired radius to the circumference of the earth and then multiplying it by 360 (number of degrees around the earths circumference).  This issue here was that it was only multiplied by 180 making the result out by a factor of 2.  Also made the test for circles actually check to make sure it has the correct centre and radius.

Closes #7301
Warmer (search) to support query cache
allow for search based warmer to support query cache flag on the search request, and use the index level query caching flag if set.
closes #7326
Aggregations: Scriptable Metrics Aggregation

A metrics aggregation which runs specified scripts at the init, collect, combine, and reduce phases

Closes #5923
fix to compile issue caused by scripted metric aggregation change
Internal: make sure that all shard level requests hold the original indices

A request that relates to indices (`IndicesRequest` or `CompositeIndicesRequest`) might be converted to some other internal request(s) (e.g. shard level request) that get distributed over the cluster. Those requests contain the concrete index they refer to, but it is not known which indices (or aliases or expressions) the original request related to.

This commit makes sure that the original indices are available as part of the shard level requests and makes them implement `IndicesRequest` as well.

Also every internal request should be created passing in the original request, so that the original headers, together with the eventual original indices and options, get copied to it. Corrected some places where this information was lost.

NOTE: As for the bulk api and other multi items api (e.g. multi_get), their shard level requests won't keep around the whole set of original indices, but only the ones that related to the bulk items sent to each shard, the important bit is that we keep the original names though, not only the concrete ones.

Closes #7319
Internal: adjusted internal requests visibility from public to package private (redo)

was just reverted by mistake in the failed attempt of isolating the change and taking it out of #7319
NPE in ShardStats when routing entry is not set yet on IndexShard
closes #7356
Query Cache: Add hit and miss count
closes #7355
[TEST] Improve robustness of restoreIndexWithMissingShards test