Add missing cluster blocks handling for master operations
Master node related operations were missing proper handling of cluster blocks, allowing for example to perform cluster level update settings even before the state was fully restored on initial cluster startup

Note, the change allows to change read only related settings without checking for blocks on update settings, as without it, it means one can't re-enable metadata/write. Also, it doesn't check for blocks on cluster state and health API, as those are allowed to be used even when blocked to figure out what causes the block.
closes #7763
closes #7740
Internal: make sure that internally generated percolate request re-uses the original headers and request context

Closes #7767
Aggregations: More consistent response format for scripted metrics aggregation

Changes the name of the field in the scripted metrics aggregation from 'aggregation' to 'value' to be more in line with the other metrics aggregations like 'avg'
[TEST] Only close GLOBAL_CLUSTER if it's non-null
Test: increase zen logging
[TEST] adjust chunk size to create less but bigger files to trigger throtteling more reliably
[SNAPSHOT] Minor code cleanup
[TEST] Wait until warmer is registered when testing timeout
[TEST] Only reset test cluster if a test actually failed

Previously we resetted the test cluster for all subsequent tests
even though they didn't fail. This make suites like REST tests faster
and prevents crazy timeouts.

Closes #7775
Aggregations: Fix regression bug for the support of terms aggregation on the `_parent` field.
Internal: make sure that all delete mapping internal requests share the same original headers and context

Delete mapping executes flush, delete by query and refresh operations internally. Those internal requests are now initialized by passing in the original delete mapping request so that its headers and request context are kept around.

Closes #7736
Internal: make sure that update internal requests share the same original headers and request context

Update request internally executes index and delete operations. We need to make sure that those internal operations hold the same headers and context as the original update request. Achieved via copy constructors that accept the current request and the original request.

Closes #7766
Internal: add indices setter to IndicesRequest interface

We currently expose generic getters for indices and indicesOptions on the IndicesRequest interface. This commit adds a generic setter as well, which can be used to set the indices to a request. The setter impl throws `UnsupportedOperationException` if called on internal requests. Also throws exception if called on single index operations, since it accepts an array as argument.

Closes #7734
[TEST] Reimplement AckTests#testDeleteWarmerNoAcknowledgement

This test was not testing what it was supposed to test. This commit
implements the test as an actual delete warmer test without ack
returned.
[CORE] Add AbstractRunnable support to ThreadPool to simplify async operation on bounded threadpools

today we have to catch rejected operation exceptions in various places
and notify an ActionListener. This pattern is error prone and adds a lot
of boilerplait code. It's also easy to miss catching this exception
which only is relevant if nodes are under high load. This commit adds
infrastructure that makes ActionListener first class citizen on async
actions.

Closes #7765