REST api: made sure that the REST headers are copied over from REST requests to the corresponding TransportRequest(s)

Introduced a filtered client used in all REST actions, which delegates all of the operations to the internal Client, but makes sure that the headers are properly copied from REST requests to TransportRequest(s) when it comes to executing them. 

Enforced use of the filtered client through `BaseRestHandler`, one instance needed for each REST request.

Replaces #6464 as it provides a better and safer way to copy headers from REST layer to transport layer.
even after #6517 this is not so easy to achieve keeping type-safety at the same time, because the `Client` generic type which can either be `Client`, `ClusterAdminClient` or `IndicesAdminClient`. I'm opting for duplicating the execute methods, it's still less LOC than trying to generalize this so that we have a single pair of `execute` methods.