Performs a deep clone of this object.
Returns a SmartPointer to the newly created clone, and adds a record to the specified ID map.
If the cloning operation fails, a null SmartPointer is returned.
A deep clone is a clone of this object and everything it owns.
This function should not be called by client code; use OdDgDatabase::deepCloneObjects() instead.
This function can be overridden in custom classes.
The default implementation of this function appends the cloned object to the specified owner object.