Repurpose the UseSocks settings to allow different kind of proxies.

By setting the settings to OtherProxy with a hostname and port,
connection can use an arbitrary non socks proxy to establish the
connection to a certain host. Other proxy will establish the actual
destination from the data send (for example HTTP header for HTTP
proxies).

Note that OtherProxy is _incompatible_ with TLS, as there's no
way to setup an encrypted tunnel straight to the destination, as
the proxy is suppose to infer the destination from the data and
the handshake would try to establish the identity of the destination
instead of the proxy.

Also add a SocksSettingsEnvironment to get the SOCKS settings
from an environment variable defaulting to SOCKS_SERVER but that
can be overrided.
bump version to 0.2.2