Implement a virtual clone method for geometry handlers

This provides a simple mechanism for copying the objects when their
type is not available.
Refs #10178
Use handler::clone method in Object copy and assignment.

The new object now retains the same handler properties as the original.
Refs #10178
Implement unit tests for Object copy and assignment.

Refs #10178
Merge remote-tracking branch 'origin/bugfix/10178_geometry_object_copy_and_assign'