Refactor internal property store code in ComponentRepository
There are many methods that work on lists of
PropertyStore and lists of
WeakPropertyStore. I can improve this if I make PropertyStore and WeakPropertyStore have a hierarchy, and move the logic within the loops processing said lists into methods of the store types.