Kernel refactor [preview]

For @ajs6f comments.
@ajs6f here's an example where I've wrapped the RepositoryException with our own `RepositoryRuntimeException`. Is there a better way (and, does this provide enough value to be worth doing)?