Fixes crashes where a request times-out, but then is completed by
UDN sometime afterwards, with a free-d object. Have the DNS::Client own
requests, and be able to retrieve the udns_query to cancel them, in
the timeout case.
Fixes a couple of Sentry reports.
- import udns library
(http://www.corpit.ru/mjt/udns.html)
- initial draft for a DNSClient (derived from HTTPClient)
Enable compile and test by adding -D ENABLE_DNS=Yes to cmake flags