Added tests for the remaining lexemes.
Added the concept of a parser interface.

    This will allow me to differentiate between real URI parsing and testing.
Added code for parsing of a URI

    We keep track of the parts by reporting the length of each section to the URIParserInterface
    This prevents copying and allows us to identify the parts in the original string.

    Errors generate exceptions.