Accept square brackets in query param names

This seems like it may not be allowed by the spec but its in the
wild. Going to allow it on this branch for now while I investigate
further in the spec
Fix some edge cases, add parser options

Added options to parser to specify the strictness of your parser. So far
the lax option seems to be as lax as some of the major uri parsing
libraries, but only on queries: it takes any character till it gets to

Fixed some edge cases where fragments could not be parsed independently
of eachother. Wasn't using endOfInput properly, so invalid data just got
left unconsumed and a valid input was returned.