Fix Url relative constructor.

Actually get the query from the base URL.
Fix bugs identified by the testsuites

* Handle resolving . and .. in path properly
* Make the subtle distinction between empty and unset for the authority,
fragment and query.
Add some tests derived from Ruby Addressable

They have a very complete testsuite, but not all of it is relevant to
us. Pick some of the interesting tests for now.
Remove some redundant fields

These were getting out of sync and causing trouble, and they are easy to
compute from existing information.

Fixes some problems detected by the testsuite where the user/password or
the host would sometime disappear from the URL.