We now use dns.inet.low_level_address_tuple() for the low-level tuple
conversion.
We now detect mismatches between source and destination address families.
If a source_port has been specified but we have no idea about the
family, complain. (This can only happen when 'where' is a URL and no
source address has been specified either.)
'where' MUST be an address literal unless being called by DoH code, but we
tolerated failures in other cases.
In the DoH case where 'where' was a URL and source was specified, the
lack of an address family in the destination caused us to return None
for the source, and thus not set it even though the caller asked for it.
We now infer the address family from the source address in that case.