Add context data to RequestContext

Summary: This will be used for fbtrace support
Allow using RequestContext in a client
Move ClientRequestContext to nifty-client and add getRequestChannel

Summary: This is for http clients. Http client uses binary protocol and
the context can use the RequestChannel's type to determine if it is a
HttpClient and set its headers.
Pass protocolFactory parameter to superclass constructor

Summary: This parameter is ignored and defaultProtocolFactory is passed,
this looks like a bug to me.