Allow clients to specify TCP timeouts

Clients currently are limited to a hard-coded 3 hour TCP socket read timeout. This can be extremely long for many clients, or even too short for some.

The code does not change any existing public interfaces (only adds new public methods).

An example use of the new settings is:

    HttpClientFactory httpClientFactory = new HttpClientFactory(connectTimeout, socketTimeout)
    HttpCommandExecutor.setHttpClientFactory(httpClientFactory)
...
    HttpCommandExecutor executor = new HttpCommandExecutor(seleniumUrl)
    RemoteWebDriver driver = new RemoteWebDriver(executor, capabilities)