Fix test breaks from my last change

Some callers actually wanted to create a transport around a ChannelBuffer in order to traverse through the data in the buffer and figure out how many bytes were read. If the buffer is duplicated internally, they can't check how many bytes were read without providing access to the duplicated buffer. In the end I decided to switch things back to how they were, and the code that actually *did* want the buffer duplicated (to do some pre-processing of the message before sending it to the actual processor) will do so explicitly.
Add handling for RejectedExecutionException

Send a TApplicationException response (and don't process the request) when the server is configured with an executor that has a limited-size queue, and a request arrives but the queue is full.
Support task timeout
Add NiftyClientRequestContext for client side request context processing
Factor out RequestChannel interface (to support channels not based on netty)
Pass client config to channel connector methods

Header connector will use this to get the netty timer to use for
authentication calls
Pass config objects to security factories

Make the client/server configs accessible respectively to the
client/server security factories. The primary use for this currently
will be for the security factories to get the shared timer which will
can be used for security-related timeouts.
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
Use requestSequenceId in sendTApplicationException

The incoming message's seqid is used but this sqid isn't implemented in the same way across languages. The task timeout test in TestPlainServer succeeds because java client maintains an incremental seqid starting from 1. The php client starts from a seqid of 0 and breaks.
Free incoming requests ASAP

Before this change, an expiration timer would hold a reference to a
request until the timer expires (5 seconds by default), even if a reply
gets generated much sooner. The result is that all requests recieved in
the last 5 seconds are held in memory even if most/all could be purged.

This change cancels the expiration timer and allows the GC to free a
request for which a reply has been generated.
Add context data to RequestContext

Summary: This will be used for fbtrace support