SSLSocketFactorySelector and related changes.

This change would allow single instance of HttpClient to be used with multiple SSLSocketFactories, unlike today, where one instance of client uses single instance of it.

This way, one can use multiple specially configured SSLContexts/SSLSockectFactories to connect to different targets. Some of them might be "weak" (accepting self signed certs too), some of the might use their own trust material, and some of the might use the "default" Java trust store (having default CA chain verification).