Export exists method on python AlgorithmFactory.

Refs #5157
Use AlgorithmFactory::exists for checking algorithm availability

...in SNSPowderReduction. This avoids the far more expensive check
of grabbing all registered algorithms and checking that list and cuts
down the required work at start up.
Refs #5157
Change SNSPowderReduction to be a DataProcessorAlgorithm.

This then preserves the history of the child algorithms so that it can
generate its script.
Refs #5157
A bit more commenting around creating the child algorithms in Python

Refs #5157