Move ThriftUnframedDecoder to core where it belongs
Refactor NiftyClientChannel.Factory to NiftyClientConnector

A connector combines the knowledge of how to construct an appropriate type of channel for a connection (e.g. framed vs unframed vs http) with the specific information needed for that type of connection (e.g. framed needs HostAndPort, but HTTP needs a URI, and a future SASL connector could an address+credentials).