This is not a complete patch, but rather RFC: while the schema implementation
itself does not seem very complicated it likely requires changes to the way we
keep track of available schemas. Right now, llvm::Registry allows to
.instantiate() found schemas but non of the existing ones require parameters.
For the portable URI schema we do need to understand where the project is and
hence it would require some internal stored parameters.
One way of dealing with it would be exposing a singleton that would store those
parameters assuming there could be only one RepoScheme at a time. This does not
look very nice from my perspective since it'd be a part of some global state
but it would do the trick.
What do you think?