DNS-SD Client Support

Re-worked mdns client to cache all over the wire results, replay the cache for a new query, and provide additional RFC6763 data to lookups (eg parsing TXT records).  Additionally, mdns lookups can be made directly for a record (eg a SRV record) instead of only being able to resolve a service.
Please add a comment (of the form "// Subscribe returns ...") because the method is public.