Untested but basically correct functionality
Move DNS querying out to own module

Also, TTLs are fake now, because the stuff involved in trying to
get them right (essentially, re-implementing dns.resolve with a
couple minor differences that have dangling issues themselves)
just wasn't worth it.
Since records could appear in any order, compare arrays as sets