To Do: * Test for ComponentState.{init,destroy} and driver-related stuff * Registry tests * Registry doc * General usage documentation * Uncouple component-provided names from the library * 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)