Initial commit of DNS client.

Code currently can form a valid A type query, and read a response
with A, NS, and CNAME resources in the reply. Socket code still
needs to be improved (currently ignores timeout and retries).

This is a first draft version written over ~4 evenings. I want to
rewrite the DNS Resource Data processing to allow modular support
for more types of responses.