It enumerates the different ComponentTypes: Transform, Model, Script, Controller, GameplayIdentifier, (other Physics collision components to be included).
The component contains a handle Handle, a pointer to the owner GameObject, an isActive bool and if it is from an archetype bool. In addition, it contains the pointer to the BaseFactory so that the component can remove itself from the active instances of itself.
We can unregister a component, initialize a component, clear (deactivate) a component, compare it with other components, get its type, its owner, set its owner, serialize and deserialize it using YAML nodes and Flush the information to the editor if needed.