Rework component system to use type-keyed multimaps instead of vectors