preparation for asynchronous DNS resolution

This is an initial step towards fully asynchronous DNS resolution.
Right now it improves things by loading the resolution off to a separate actor with potentially dedicated dispatcher.
The code is covered by TcpConnectionSpec "report failed connection attempt when target cannot be resolved", although only unsuccessful resolution is tested.

Fully asynchronous DNS client coming soon, it's already working in production, but isn't 100% RFC compliant.    
Do we really need the lock? It should be possible to put the Map+Queue in an immutable case class representing the compound state (using immutable Map and Queue implementations of course) and just CAS-looping on an AtomicReference.