OEBaseData is an abstract class which defines the interface
necessary for storage, retrieval, and duplication of data stored
through the generic data interface in the OEBase
class. Data stored in classes derived from OEBaseData is identified
through data tags. The ability to perform run-time type checking is
also built into the class.

This pure virtual copy constructor should return a deep copy of
the OEBaseData object. The copy of the object returned is not
memory-managed by the parent instance. It is the responsibility
of the programmer to manage the memory created and returned by
this method.