A component with "drivers" will initialise/start its drivers after it is
initialised/started itself. It will also stop/destroy non-driver reverse
dependencies before stopping/destroying its drivers.
* Errors during shutdown or destruction will be thrown as exceptions.
Returning the collection of errors was clumsy, at best - if something
goes wrong, the registry has failed anyway.
* Recursive initialisation and destruction methods in ComponentState
* Use ComponentState's methods while initialising, starting up, shutting
down or destroying the registry.
* Setting a component information record's name to null will lead to an
anonymous component, while setting it to an empty string will lead to an
component whose name is that of its class.
* New Anonymous annotation to indicate that a component is meant to be
anonymous (conflicts with ParametricComponent or valued Component
annotations).