Kernel refactor [preview]

For @ajs6f comments.
It is definitely better. A way for it to be even better than better is available if we know why the original `RepositoryException` was thrown. Then we could create a purpose-specific subtype of `RepositoryRuntimeException` to throw instead. But even just throwing ours is better than theirs. One thing to consider is whether it would be worth trying to figure out what was thrown to cause the `RepositoryException` to be thrown, and wrap our `RepositoryRuntimeException` around that instead. We might be exposing MODE-internal exceptions, but if they are more meaningful than `RepositoryException`, I have no compunction about so doing.

In this case, would it be better to check to see if `PathNotFoundException.class.isInstance(e)` or the like and then we could throw a `OurPathNotFoundException < RepositoryRuntimeException`?