Fix parsing of BND address in SOCKS5 response
Refactor methods to prepare for UDP support

* Add socket parameter to _recvall()
* Factor out _SOCKS5_address() to pack host and port according to protocol
* Factor out _SOCKS5_request() to send arbitrary command
* Factor out _proxy_addr() to handle proxy port defaults
Basic support for sending UDP packets with SOCKS5 proxies