Rewrite code for killing processes in cgroups again
Rewrite code for killing processes in cgroups again

We now go recursively through the cgroup and kill all processes in
subgroups and remove these subgroups.
This makes it possible to cleanup properly
if the benchmarked tool uses cgroups on its own,
assuming that the tool stays below the cgroup in which it was started
(which it should do, and what for example BenchExec does).
Note that there is still the problem that a tool that is allowed to access
cgroups can avoid resource limits and escape from being killed
if it moves itself outside of its cgroup.

dbeyer/benchexec,ultimate-pa/benchexec,dbeyer/benchexec,sosy-lab/benchexec,sosy-lab/benchexec,sosy-lab/benchexec,dbeyer/benchexec,ultimate-pa/benchexec,dbeyer/benchexec,ultimate-pa/benchexec,ultimate-pa/benchexec,sosy-lab/benchexec,ultimate-pa/benchexec,sosy-lab/benchexec,sosy-lab/benchexec,ultimate-pa/benchexec