Components are bits of data and logic that can be added to entities.
The component's name, generated based on its class. Components with the same name replace eachother when added to an entity.
Called just before this component's first update after being added. This is the best place to put initialization logic that requires accessing other components/entities, since it waits until the rest of the entity hierarchy is accessible.
Note that onStart may be delayed until the next frame after adding a component, depending on where in the update step it was added.
Called just before this component will be removed from its entity, if onStart was previously called.