Use SocksAddress and provide support for UDP envelopes

These two commits make more consistent use of the SocksAddress type and provide an interface to wrapping and unwrapping packets.

Example of what this extension allows me to do:
http://lpaste.net/4072109066577510400

I bumped the version number in this PR due to the type changes. If you aren't willing to normalize the SocksAddress usage I still think that the UDP encapsulation is worth having in the library.

Eventually it would make sense to include full UDP client support in the library, but this PR isn't there, yet.