To Do:
 * Test for ComponentState.{init,destroy} and driver-related stuff
 * Registry tests
 * Registry doc
 * General usage documentation
 * Automatically-updated singletons
 * Document exceptions

Other ideas (maybe later if needed):
 * Unregistering components
 * Hierarchy of registries
 * Driver-related helpers (e.g. determine type of driver components, register/unregister drivers with main)