* feature: add optional !important suffix
if !important is added to any of the resolvers, then all are considered
exclusive and no other fallbacks will be added.
* fix: !important can be on it's own
* simplify recursiveNameservers
- use custom OR default nameservers
- add testing
* removed print line
* tests: fixed defaults when resolv.conf is found
Before when we used lego as our ACME library, DNS solvers abounded in
the lego repository and they could be used directly. Our new acmez lib
is very lightweight, and "bring-your-own-solvers", let alone your own
DNS provider implementations.
DNS providers are implemented in libdns: https://github.com/libdns
This commit adds an implementation of acmez.Solver that solves the DNS
challenge using libdns providers.
Unlike the other solvers, this one is exported because it is not a
challenge type that is enabled by default, and there is more config
surface.
We borrowed some DNS utility functions and tests from the lego repo.
But this is a very lightweight implementation that has a much, much
simpler API and smaller footprint.