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

This fully addresses #105.
from_string has a form that accepts a boost::system::error_code &ec,  could we use that instead and pass it as an argument to parse_address?