kernel - Fix signal races against exiting processes
* Fix a panic which can occur when a signal races an exiting process.
* Fix an incorrect status return from the wait*() system calls which
can sometimes occur when a SIGTSTP or other signal races an exit.
Do not allow the signal status to overwrite the exit value.
* Fix a race where the kill() system call can return ESRCH when a signal
races an exiting process which has already entered the zombie state.
Return success in this case and silently drop the signal.