URI have a scheme, separator, and scheme-specific part.

This only deals with a subset of *URLs*. What about scheme-relative `"//"`, `"mailto:"`, `"ftp:"`, `"file:///"`? (Don't add checks for these, because I don't see a need for this utility function.)