Allow to compose CSharp plain classes at ScriptableObject, with SerializeReference, and use it with similar API as GameObject/Component such as:
- AddComponent()
- AddComponent(T)
- GetComponent()
- TryGetComponent(out T)
- RemoveComponent()
- RemoveComponent(T)