Remove the need for the C++ PythonAlgorithm class.

This can now all be done with a templated adapter that can be resused
for exporting other Algorithm types that are to be overridden in Python.
The PythonAlgorithm name in Python is now simply an alias for Algorithm.
Refs #5157
First cut at exporting DataProcessor algorithm and basic test.

Refs #5157
Export DataProcessor algorithm to Python

It is exported so that classes in Python can inherit from it.
Refs #5157
Add pass-through methods for DataProcessor

MSVC won't compile when they have been redefined as public on the adapter
class when used in conjunction with the boost.python class_ exporter.
Refs #5157
Remove Python FrameworkManager::createAlgorithm method.

It was different to the C++ one and it wasn't transparent as to what
happened when an algorithm was created. The code for creating an
algorithm for a simpleapi function is now back in the simpleapi module
so it is easier to determine what is actually happening.
Refs #5157
Remove unused callstack methods

Refs #5157
Update FrameworkManager.createAlgorithm references

They now use the more standard AlgorithmManager.
Refs #5157
Update RunPythonScript to wrap script code in small algorithm.

This ensures that all calls to make child algorithms go through
Algorithm.createChildAlgorithm
Refs #5157
The Python-level declareProperty methods are now static

They also accept a boost::python::object as the first argument so that
they can match against multiple types of base class.
Refs #5157
Fix check for DataProcessor as base class.

Refs #5157
Use DataProcessorAlgorithm as base for algorithms requiring history

Refs #5157
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
Merge remote-tracking branch 'origin/master' into feature/5157_dataprocessor_in_python

Conflicts:
	Code/Mantid/Framework/PythonInterface/plugins/algorithms/SNSPowderReduction.py
Refs #5157
Kill OS X compiler warning.

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