add option to socket middleware that allows connecting to all resolved addresses for a given host.
Clean up code around connecting to InetSocketAddress:
  Only resolve the host if necessary.
  Resolve the address on a separate thread pool so it doesnt block the NIO thread.
  Use TransformFuture to handle the conversion from an InetAddress to a AsyncSocket.