MDNS Optimizations (#363)
* Complete DnsCodec
Add missing values from the messages and their parsing. Additionally optimize some things and improve typing. Also introduce a "Partially Pre Encoded" type for DnsMessage to allow pre encoding.
Also correctly set the real MDNS message size by removing all UDP and IP headers.
* Enhance DataReader to set the offset (used by former commit)
* Optimize MdnsScanner query sending by pre-encoding records.
* Improve UdpMulticast server to also send unicast messages on need
* Refactor sending and handling MDNS messages
This commit makes sure to also respect maximum MDNS message size when the Scanner sends Responses which was not the case before. Additionally it fulfills some more requirements from MDNS specs, e.g.:
* send via Unicast is requested and allowed
* adds "Known answers suppression" (e.g. remove answers already provided in query as known from response)
* adds "duplicate record suppression" by preventing records being sent from last second
* optimize Message assembly and splitting, also implement pre-encoding
* Adjust and enhance MDNS releated tests
* Changelog
* [execute-chiptests] fix tests and execute chip tests too
* readme
* Add some logs
* Send Fabric announcements in parallel to prevent too long time and blocking of code flow
* Address review feedback
* run chip tests more often