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.
What's the logic here?  Please add a comment.