Added a dns class that caches dns lookups
This is a first pass at addressing this issue: #2717
A new Dns class has been added that wraps the default Dns class and caches the results of the lookup. The cached results are returned for subsequent lookups, reducing the potential for failure due to DNS poisoning or similar issues. This also creates the option to load the database with known DNS information so that no lookup is required, although that functionality has not been included at this time.