Use an independent readerIndex when adapting a TTransport from a ChannelBuffer

We have some code that wants to adapt a TNiftyTransport around an incoming ChannelBuffer to pre-process it, without affecting the read index of the buffer. To do this, TNiftyTransport (and TChannelBufferInputTransport as well) should call duplicate() on the ChannelBuffers they use for input. Doing this should be cheap, because it doesn't duplicate the memory, only makes a new ChannelBuffer wrapper around the same memory, with different reader/writer indices.