Problem: in DCUtR, the peer that accepted the relayed connection starts
the hole punch. It resets a hole punch stream on a connection it sees
as inbound. directConnect on the peer that dialed through the relay
therefore failed with "Unexpected EOF". The other peer's punch then
made the direct connection a short time later.
Fix: when this host dialed every relayed connection to the peer,
directConnect does not start a punch. It waits for the direct
connection that the peer's punch makes, for at most
HolePuncher.peerHolePunchTimeout (30 s). If none comes, it throws an
error that tells why. Closes dart-libp2p-114.
Added: MdnsDiscovery takes queryOptions (MdnsQueryOptions). The
defaults are the previous values; reusePort stays off on Android.
Requested in PR #11 by syzygyinteractivemedia. Closes dart-libp2p-6hx.
Tests: AutoNAT v2 interop with go-libp2p over TCP and UDX, in both
directions, with dial data. The go interop peer has the new modes
autonat-server and autonat-client. Closes dart-libp2p-8wx.