IPv6 Support. This fixes issue #381

This adds full IPv6 support, including adding a server by IPv6 address and DNS. Currently it sends a probe to see if it can connect to IPv6 before doing so. Broken IPv6 (people with a non working default route) will suffer however.

Squashed and rebased for easy committing :)