New URI parsing logic.
Cleaned up methods names.
Renamed class to XUriParser
Clean-up of regular expressions in XUri.
Added unit tests for XUriParser based on XUri unit tests.  Fixed discovered issues.
One has to wonder why Coroutine is serializable?!?
XUri is no longer serializable.

Fixed an issue in WithParams()/WithQuery() that made it impossible to build a uri with a non-null, empty query.
Forgot to remove an empty XML comment.
Added support for proper segment parsing to new XUri parser.
Updated tests so that both the new and old parser can be tested at the same time.
Removed tests that weren't related to parsing.
XUriParser now decodes username, password, and fragment when needed.
Added query parameter parsing.
Optimized Decode() method for XUriParser
Don't allow port numbers greater than 65535.
Started reworking the unit tests by grouping them into functional areas and adding missing tests.
Fixed an issue in how UsesDefaultPort was computed in XUri.
Added more unit tests for XUriParser.
XUri: allow '\' in query parameters and fragment
XUriParser: fixed bug that allowed '<' as valid character in path, query, and fragment

Added app to compare results from XUri and XUriParser using a csv files of URIs.
XUriParse: Allow international characters in path, query parameters, and fragment.
More unit test clean-up.
Fixed an error introduced by the previous commit.
XUriParser: fixed character decoding issues.