ClientRequest Executor fix and log fixes

1) Protocol negotiation request does not have a timeout associated with
it . So if the connection fails the Input/Output buffers are leaked and
cause Out Of Memory errors. Setting the timeout for the Protocol
negotiation requests as the caller expects a timeout.

No new logs are introduced. Only the existing log is made more
informative.

2) When protocol negotiation timesout, an obscure error message is thrown,
IllegalStateException. This happens as the code tries to read the result
in case of timeout. Handle this case and report a meaningful error.

3) Serial request times out on a connection, error message does not
mention the socket that timed out.

4) Fix other minor logging information.
Exceptions goes uncounted

Get does parallel requests first and if it fails/times move on to the
serial requests. Exceptions are tracked if the parallel requests fail or
timesout after the pipeline is finished. But if the Serial requests are
processing then the exception goes unnoticed. This causes the node to
stay available for a long time affecting the latency and error rates.

This fix reduces the time window an exception goes unnoticed. I thought
about moving the error handling inside the callback and not have it at 2
places. But not sure what will be the perf impact of the error tracking
code, could be negligible but saving that for a later time.