Make Registry public

This change set exports a Registry interface implemented by the local
registry type. I added TODO comments along the way with improvements
that could be done to reduce the surface area of a Registry's behaviour
and to make the code more orthogonal overall. I'd be glad to contribute
these changes over time, if you like the direction I propose.

This has been done on top of the `standard-exports` branch.

All tests pass except for the Linux specifc `/proc` related tests. I
suggest that we add linux specific build tags to those files.
Yeah, definitely keep the convenience method.

All those problem with the polluted interface here basically arise because this PR introduces an interface in the first place. The original code had a registry object, but that was more for implementation convenience and never exposed as an interface.