added struct for URI representation

Advanced helper structure to URI representation, easy to parse/modify/construct URI strings.
I don't think this should be a member function. There is no need to in terms of accessing internal data, and it is quite different from the rest of the API (system call vs. just string manipulation). Also, I'm not so sure about the `fast` option – why does it need to be a template argument, and wouldn't be a local cache of the lookup results be a better option for most applications?