Attached is a patch for the issue in question.
Note that I made a change in the way toString() is rendered that could potentially break backwards compatibility. As a result, I modified three assertions in TestPath.testNormalize() in order to correctly interpret the absolute pathnames as canonical paths.
For instance, consider the assertion:
assertEquals("//foo/", new Path("//foo/").toString());
The two slashes at the beginning of the string are only rendered because the URI is created with "foo" as the authority; if those two slashes were part of the path, they would get normalized to a single slash. Also, the trailing slash would have been trimmed if the whole string had been considered a path; the trailing slash is only inserted after an authority.
Therefore, if we are not treating "foo" as the hostname/authority but instead as the first directory in a path, then new Path("//foo/").toString() should be equal to "/foo".
Hopefully no one was depending on the first directory being an authority in a scheme-less URI string, otherwise this might break compatibility. If URI's are being used correctly, however, this should be okay.