Make cat-dns answers valid

Fix for https://github.com/notwaldorf/cat-dns/issues/5, include the original question
in the DNS response generated.
Correctly handle query name parsing

This change fixes https://github.com/notwaldorf/cat-dns/issues/4 . Instead of assuming
that a queryname ends 4 bytes from the end of a query, this change computes the query
name length by counting the length of each label in the query. cat-dns now works with
EDNS0 options.

Tested with:

     dig +bufsize=4096 www.example.com @localhost
     dig +bufsize=4096 . @localhos
Implement label compression for cat-dns

This commit implements https://github.com/notwaldorf/cat-dns/issues/6
DNS supports label compression, DNS names that appear twice or more in
a dns message can be compressed by pointing later iterations at the
first one. This commit points the answer name at the query name, since
they are always the same. As a DNS header is always 12-bytes long,
this pointer value is always the same.
Correctly handle imgur

https://github.com/colmmacc/cat-dns/commit/3571e862ab3a8b9b93dd1e435059b86a6f5a6e58
updated cat-dns to use label compression, but this breaks imgur resolution. This
commit uses the uncompressed question name instead of the answer name to fix this.

See https://github.com/notwaldorf/cat-dns/pull/8 for discussion of the problem
Merge pull request #8 from colmmacc/master

RFC conformity and label compression for cat-dns