Replace the SOCKS4a listener with a SOCKS5 listener.

The change is designed to be transparent to calling code and implements
enough of RFC1928/RFC1929 such that pluggable transports can be written.

Notable incompatibilities/limitations:
 * GSSAPI authentication is not supported.
 * BND.ADDR/BND.PORT in responses is always "0.0.0.0:0" instead of the
   bound address/port of the outgoing socket.
 * RFC1929 Username/Password authentication is setup exclusively for
   pluggable transport arguments.
 * The BIND and UDP ASSOCIATE commands are not supported.