dns: support name extraction with message compression
DNS uses a technique called Message Compression when multiple DNS names exist in a message, in which a name part may point to a different offset in the packet. Implement DNS Message Compression decoding, thus being able to extract DNS names from answers.