Added an option to add arbitrary headers to the client requests

The headers are key/value pairs defined in the settings under the `request.headers` namespace.

Also changed test infrastructure's so it'd be possible to define the additional settings for transport clients.
yeah...been there...done that... :) even if you disable requests validation you'll run into problems when serializing the request (`writeTo` method). Can't you use a fake request so that validation and serialization are not a problem, and then call `execute` and check that requests get set? Not sure it is really needed to check every single request at this point?

I'd love to see a unit test around this though, I don't think this necessarily requires a running node, you could just create your own mock transport service that checks that each request contains the headers (you don't have to send the request for real). You could make it work without even requiring a transport client but by testing `InternalTransportClient` as I did here: https://github.com/elasticsearch/elasticsearch/blob/master/src/test/java/org/elasticsearch/client/transport/InternalTransportClientTests.java .

Also, I'm a bit hesitant on the changes to the test infrastructure that are needed for this single test. I'd rather prefer to have a manually created transport client here with the settings, or not even require a complete transport client if you go for the unit test.