This commit changes "verbose" flag from boolean to count flag, so we can
specify the flag multiple times to indicate different logging output:
- No "-v": no query logging except startup/listeners
- "-v" : query logging enabled
- "-vv" : debug level logging enabled
Previously, for each DoH query, we use the net/http default transport
with DialContext function re-assigned. This has some problems:
- The first query to server will be slow.
- Using the default transport for all upstreams can have race condition
in case of multiple queries to multiple DoH upstreams
This commit fixes those issues, by initializing a separate transport for
each DoH upstream, the warming up the transport by doing a test query.
Later queries can take the advantage and re-use the connection.