Enhancement: Add support for hostnames (and more robust IP checking, too!)

This fully addresses #105.
It is interesting to note that this does in fact pass config validation, but then when it fails to resolve later then the process exits.

This is a problem with the ConfigTest::ConfigRunner.  We could define a specific error code for "Bad Config" (say 2), and then compare some configurations with "Exited" and other configurations with "Invalid".