TaggedObject is used as a base class to represent all classes
that may have a integer identifier, a tag, to identify the object. It
is used in the framework as a base class for many classes, for example
DomainComponent and Vertex. The class is provided so that container
classes can be written to store objects and provide access to
them. This saves us rewriting container classes for each type of
object. (templates will be able to provide this functionality when
they are provided with all compilers).