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

This fully addresses #105.
"AddressUtils" is inconsistent with how we name other files which don't export a specific class.
UpperCamel appears to be reserved for Class-specific headers, while we use lower_underscores for other files (see core/shutdown.h, eventlogger/msgpack_decode.h, util/password_prompt.h)