DNS: implement reverse-name-lookup

TODO:
	report httpd memleak

	report DNS queries being treated case sensitive

kernel/lib/string.s:
	strdup: make global; add check for malloc_ fail.

kernel/net/dns.s:
	dns_parse_name: don't exceed package length for uncompressed names.

	add dns_resolve_ptr which constructs the in-addr.arpa lookup name.

	reword dns_resolve_name: split off to dns_resolve$ taking TYPE/CLASS
	argument.

	dns_resolve:
		check question/answer class/type matches for all formats
		(uncompressed names didn't check and would cause problems).

		parse the answer for PTR queries and return the name using
		a strdup mallocced buffer.

	net_dns_request: take arg DNS_TYPE/CLASS.

kernel/net/net.s:
	add net_parse_ip_ which doesn't print error messages.

	cmd_host: if argument is IPv4, do reverse lookup (dns_resolve_ptr).

kernel/print.s:
	add sprintdec8.