Allow mDNS listener to select which types of packets to forward.

mDNS answers are multicasted, so to make things simpler, each endpoint
will only listen for and forward a specific kind of packet, rather than
using the send/reply approach that the DIAL listener used.
Implement mDNS packet forwarding.

DIAL forwarding was built on simply relaying the SSDP packets across
subnets, and then relaying the unicasted response back. Since mDNS
answers are also multicasted, both endpoints end up needing to forward
mDNS packets. Instead of trying to wait for a reply though, each end
just listens for either query or answer packets and only forwards those.