To Do:
 * Test for ComponentState.{init,destroy}
 * Registry tests
 * Registry doc
 * Implement "DriverFor" support
 * General usage documentation
 * Uncouple component-provided names from the library
 * Automatically-updated singletons
 * Registry: get all component states
 * Document exceptions

Other ideas (maybe later if needed):
 * Unregistering components
 * Hierarchy of registries