URIUtils: account for "opaque URIs" when normalizing

Such URIs do have a scheme, but no host part; URNs are an example of this.

The URI class has an .isOpaque() method which does the trick. If we detect this,
we simply normalize the scheme and leave the "scheme specific part" and fragment
intact.

Solves issue #15.