RFC 3986 compliant, Unicode-aware, scheme-agnostic replacement for urlparse