Add support for TOR_PT_PROXY

A from the spec implementation of TOR_PT_PROXY and the related APIs.

Added:
 * ClientTransportPlugin.reportProxySuccess(self) - Report proxy
   config success.
 * ClientTransportPlugin.reportProxyError(self, msg) - Report proxy
   config error.
 * ClientConfig.getProxy(self) - Obtain the configured proxy as a
   urlparse.urlsplit tuple (urlparse.SplitResult).  This will return
   None if no proxy is configured.

After calling urlsplit the code will correctly validate that it is in a
form specified by checking:
 * scheme is one of http, socks4a, socks5.
 * hostname is a valid IP address (No resolution is done).
 * port is a valid port.
 * No path, query, or fragment is present.
 * Only the username is specified for socks4a.

See also:
 * https://trac.torproject.org/projects/tor/ticket/8402
 * https://gitweb.torproject.org/torspec.git/blob/HEAD:/proposals/ideas/xxx-pluggable-transports-through-proxy.txt