Late-bind DNS resolutions

Change the internal host information from SocketAddress to an internal
HostPort class. Only resolve the HostPort into an InetSocketAddress right
before a connection (or reconnection) is made. This allows changes in DNS
mappings to be detected (e.g. when using AWS Elastic IPs).