The URL parsing in pyxet was a mess and needs to support user@domain syntax.
Rework parse_url to correctly parse and hold the different components of a URL. Previously, parse_url was used for part of the parsing, then the original url was parsed by copy/pasted code to extract other parts.
Plumb this logic through all of the rest of the URL tests.
The URL parsing in pyxet was a mess and needs to support user@domain syntax.