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
Merge remote-tracking branch 'origin/feature/8974_choose_bank_numbering'
A bit more commenting around creating the child algorithms in Python

Refs #5157
Merge remote-tracking branch 'origin/master' into feature/5157_dataprocessor_in_python

Conflicts:
	Code/Mantid/Framework/PythonInterface/plugins/algorithms/SNSPowderReduction.py
Refs #5157
Merge branch 'feature/5157_dataprocessor_in_python' into develop