Ensure the GIL is held while all python is executed.

This is required for Python on Ubuntu 13.10 where the dict
destruction requires an valid threadstate pointer.
Refs #8304
Extract the "real" shared_ptr instance from Python objects

The standard boost::python::extract<shared_ptr> actually
creates a new shared_ptr from the original and embeds
a custom deleter to decref the Python object it was
embedded into. As the C++ side is the one that created
the shared_ptr originally we just want the same one back.
Refs #8304
Introduce DataServiceExporter to reduce copy-and-paste code.

It is now used by the AnalysisDataService & PropertyManagerDataService
exports.
The new class ensures that the embedded shared_ptr is extracted
during the add* operations rather than boost.python creating a new
one with a custom deleter.
Refs #8304
Let boost.python work its magic by default for the DataService

Refs #8304
Use unmanaged algorithms in Python simple API

The proxies are unnecessary as we don't return the algorithm instances
so they'll get cleaned up automatically when the simple api call
goes out of scope.
Refs #8304
Reducer now expects just a plain Algorithm object from the framework.

Refs #8304
Merge remote-tracking branch 'origin/bugfix/8304_python_unittests_ubuntu'