struct for URI representation fixes

New branch, changes to pull request #2257
1. Some methods removed.
2. Parsing algorithm changed from regexp to string slicing (by @s-ludwig)
3. proprety "auth" renamed to "userInfo"
4. Examples converted to documented unittests
@schuetzm, no, initializers for static function variables are evaluated at compile-time and thus do not cause a runtime allocation. The reason `enum` causes allocations is because the initializer expression is basically copy-pasted into the site of use, which can be a runtime context.