AssociationManager provides a simple manner to maintain a container of ContainedObjects which the user deems are associated with an object.
To allow associations, a class inherits from AssociationManager.
This provides the code for the associate method, which
keeps a pointer to the associated object.
The associations method returns a container of associated objects
with type given by the type of the variable passed as the function
argument.