Refs #6779 Use shared_ptr as Python HeldType for PythonAlgorithms

This allows us to release Python from managing the memory when the
algorithms are created via the instantiator from the factory. It also
keeps Python managing the object references correctly when created
purely from Python.
Kill another subtle memory leak. Refs #6779

Two of the PythonAlgorithm declareProperty methods were calling
declareProperty on the same class rather than from the base class
causing a double clone of the properties.

The names (only on the c++ side) have been changed to avoid future
confusion.
Merge remote-tracking branch 'origin/feature/6779_python_algs_memleak'