MEDIUM: dns: new DNS response parser

New DNS response parser function which turn the DNS response from a
network buffer into a DNS structure, much easier for later analysis
by upper layer.

Memory is pre-allocated at start-up in a chunk dedicated to DNS
response store.

New error code to report a wrong number of queries in a DNS response.
diff --git a/include/proto/dns.h b/include/proto/dns.h
index 170eefa..c62834f 100644
--- a/include/proto/dns.h
+++ b/include/proto/dns.h
@@ -32,8 +32,8 @@
 struct task *dns_process_resolve(struct task *t);
 int dns_init_resolvers(void);
 uint16_t dns_rnd16(void);
-int dns_validate_dns_response(unsigned char *resp, unsigned char *bufend, char *dn_name, int dn_name_len);
-int dns_get_ip_from_response(unsigned char *resp, unsigned char *resp_end,
+int dns_validate_dns_response(unsigned char *resp, unsigned char *bufend, struct dns_response_packet *dns_p);
+int dns_get_ip_from_response(struct dns_response_packet *dns_p,
                              struct dns_resolution *resol, void *currentip,
                              short currentip_sin_family,
                              void **newip, short *newip_sin_family);