added struct for URI representation

Advanced helper structure to URI representation, easy to parse/modify/construct URI strings.
From a brief glance I can say this this mixes 2 concerns and is somewhat stuck in between
splitting a URI string into something easy to manipulate and constructing the URI string back from pieces.

For instance, it makes little sense to do `key=value` replacements directly on _query as a string as it's going to be quite slow and do a lot of allocations when building up a new query out of some URI. If anything AA would work much more naturally even if it's a special kind of AA.