Better error-reporting when constructing invalid URLs.

If client passes bad parameters when constructing a URL (e.g., a string
which does not match a parameter pattern), reports a more useful error in
the exception.
Fixes typo in view of one of the test pages.
Makes error reporting on bad URL args more precise.

Adds new InvalidUrlArgumentException.
Correctly parses querystrings objects.