Look up a domain name and return a list of net.IpAddress records.
If given a numeric address like 127.0.0.1 it merely parses the numbers without a network round trip.
By default the server is determined by the network interface. The fallback servers if none are configured are the Google and Cloudflare DNS services.
If there are multiple servers then they are tried in rotation until one responds. If one responds with an error (eg. no such domain) we do not try the next one. This is in line with the way that Linux handles multiple servers on the same lookup request. If we are looking up a name ending in ".local" and no specific client is provided, we use the default mDNS client default-mdns-client.