Added UdpAddress, split functionality of TcpAddress into RemoteAddressTrait and added RemoteAddressInterface to cover both. Added a method to all address types to check if they are valid.
Switched the DNS resolver adn query executors over to use AddressFactory.