slapgrid: Process promises with SR python
Let slapos node (slapgrid) launch each instance's promises using the Python installed by the SR (the Python for and by which the promises are installed).
This means that when computing the promises a Python subprocess is started for each partition. This is not as good as a single Python process (but then we have version problems), but not as bad as a Python process per promise.
To propagate exceptions to the calling slapos node process, I take advantage of the fact that the logger only uses stderr: I redirect stdout to sderr in case the promise happens to print things to stdout directly instead of using the logger, and now that stdout is unused I just print the error message to stdout and use the returncode to distinguish between PromiseError and other exceptions.
A possible optimisation would be to share the same python process for all partitions that share the same python. This would be difficult in a real slapos node because each partition has a different user and the SR python should not be run as root, but could be used inside webrunner and theia.
Also do some general refactoring along the way.