Greatly enhanced handling of child process

With the current implementation I had several problems:
* aborting running tests from the gitlab-ci didn't work (it marked the job as failed, but didn't kill the build)
* the runner didn't properly handle crashing build scripts (it considered the build is still running forever)

This pull request solves both problems. The way the build commands are executed changed completely. Now the runner creates a single temporary bash script which contains *all* the commands the build needs. The script itself is then exectued as a child process in its own session (process group) by the runner. This way we can ensure that killing the script also kills all its childs.