Teach ExecSock to create a new process group when forking children,
which makes ExecSock::Kill() kill all of them at once, instead of just killing
the child shell and leaving the shell's child to be inherited by init and keep running.
Fix the sporadic crash in *shell, which was caused by disconnecting a client
that was receiving shell output (this would not close opened shell children,
and their output would be sent to the closed client resulting in a use after free)