Cc 883 t2

OK, take two. For some reason the first pull request for these changes did not get merged. I'm gonna stay on this one, since it fixes two bugs (and a lack of one feature) in the url module that prevent me from using the main, most recent version.

* First bug: Contrary to RFC 3986, a %-encoded GEN-DELIM or SUB-DELIM character in the path or query part was treated identically to a non-encoded such character. They should actually be different.  E.g. http://foo.com/Seattle,WA%27USA should normalize to itself, and not to either http://foo.com/Seattle,WA,USA or http://foo.com/Seattle%27WA%27USA .

* Second bug: Relative URL's (i.e. URL's with no host name like /foo.html encoded to http://None/foo.html).

* Missing feature: URL's with embedded usernames and passwords were not supported.

Not only is the code on the trunk usless for my crawler (because it makes it behave), it is outright incorrect and will thus tend to make any program using the trunk version misbehave. So it's fairly urgent that these changes get incorporated. Thanks.
Commas are allowed in the path, but I find your claim that it's OK to transform "," to "%2C" or vice versa to be factually incorrect. From Section 2.2 of RFC 3986:

The purpose of reserved characters is to provide a set of delimiting
   characters that are distinguishable from other data within a URI.
   URIs that differ in the replacement of a reserved character with its
   corresponding percent-encoded octet are not equivalent.  Percent-
   encoding a reserved character, or decoding a percent-encoded octet
   that corresponds to a reserved character, will change how the URI is
   interpreted by most applications.  Thus, characters in the reserved
   set are protected from normalization and are therefore safe to be
   used by scheme-specific and producer-specific algorithms for
   delimiting data subcomponents within a URI.