Add tests demonstrating incorrect empty relative path serialization by uri.path() and  uri.pathname().

Clearly the relative path from"/a/b/c/" to "/a/b/c/" is the empty relative path "", and not "/".

Equivalently, URI("").path() should return the empty string "", but in fact returns "/".

The empty relative path is serialized correctly by .toString(), but incorrectly by .path() and .pathname().
Fix incorrect serialization of empty relative paths.

If the URI includes an authority component, then the path is always absolute. Otherwise, the path may be relative and we should not coerce an empty relative path to the empty absolute path.

We check for the presence of a hostname as a proxy for checking for an authority component, because in our implementation the presence of a hostname determines the presence of an authority component.

There was previously a check to see if the URI was a URN, but that is now redundant since a URN cannot include an authority component.
merging fixing pathname() to return empty string for empty absolute path
fixing path() to return empty string when necessary - closes #82