TaggedObjectStorage is used as a container object to store and
provide access to objects of type TaggedObject. Each TaggedObject
object stored in a TaggedObjectStorage object must have a unique
integer tag to distinguish it from other the other objects stored. The
TaggedObjectStorage class is an abstract base class, it just defines
the interface all concrete subclasses must provide. The interface
defines methods to add and to remove the components, and methods to
obtain access to the components.