* Use node 7+ WHATWG parser for hostname, fixes #1002 * only use URL if host is IPv6, expose parsed URL * catch invalid URLs, memoize empty obj * hostname returns empty string when URL throws