Breakup the registry package into separate packages.

Currently all registry implementations live in a single package,
which makes it bit harder to maintain. The different registry
implementations do not follow the same coding style and naming
conventions, which makes the code harder to read.

Breakup the registry package into smaller packages based on
the registry implementation. Refactor the registry packages
to follow a similar coding style and naming convention.

This patch does not introduce any changes in behavior.
I like that advice. The main focus of this PR is to split things up. Then we can target more specific items like renaming the controller package. I plan to continue cleaning up the registry and improving test coverage over the next week or so.