DR-117 Optimize XUri parser

* Couroutine: added [Serializable] and comment that explains why this attribute is needed
* Updated unit tests, because XUri::WithPort(int) behaves slightly differently
* Added new unit tests to confirm behavior of XUri::WithPort(int)