1.0.27.39: SIGCHLD related fixes
- WITH-ACTIVE-PROCESSES-LOCK does not allow WITH-INTERRUPTS because
that can lead to recursive lock attempts upon receiving a SIGCHLD.
- if fork() in RUN-PROGRAM fails, signal the error outside the lock.
- the SIGCHLD handler only reaps processes started by RUN-PROGRAM in
order not to interfere with SB-POSIX:WAIT, SB-POSIX:WAITPID and
their C equivalents (thanks to James Y Knight).
- the SIGCHLD handler is installed once at startup, because on Darwin
sigaction() seems to do unexpected things to the current sigmask.