Remove publicly visible TypeID and use Class instead
Forcing everyone to use TypeIds is a little awkward if the class will do just fine. If you already have the Component or ComponentData instance, then no id is needed since the internal data already has the mapped references.
The cost of a map lookup when creating an iterator is easily hidden, and is more convenient.
The only downside is doing get(TypeId) lookups and createDataInstance(TypeId) calls will be hurt, but they shouldn't be that large of a hit.