Move TInputOutputCompositeTransport to core

Moving this here from header protocol code, where I will use it to maintain
a single pair of protocols/transports for the lifetime of a client
connection (instead of creating a new protocol/transport pair for each request).
Reuse protocol/transport pair for client conns

Switch from creating a new protocol/transport pair for every new client
requests, to creating a new one for every client connection.
Disable inclusion of commons-logging in load tester

nifty-load-tester uses airlift/bootstrap, which brings in jcl-over-slf4j. Can't bring in both jcl-over-slf4j and commons-logging.
Update dependency versions for release
Merge commit '3df0270ee861f00a858619895ec1be771161adc5'
Bump to version 0.14.0-SNAPSHOT
Revert "Reuse protocol/transport pair for client conns"

This reverts commit baaa1958fdc01b250ad503d5fd7f0eaf2d0d8a7d.
AbstractClientChannel should not swallow inner exceptions
Don't allow sending requests on a channel that has errors

As a result of a recent change that fixes the ordering of closing the channel and calling the error callbacks for any active requests, there could be cases where a callback for a request failure tries to retry the request on the same channel. We should fail such requests immediately, because the channel is about to be closed anyway.
Cleanup/clarify client channel exception handling code