Force PPC Darwin to use fork instead of vfork. This change
requires both the parent and child process to explicitly set
the process group id. Vfork guarantees the child process
runs to the exec before it releases the parent process.
Now that we use fork instead of vfork, it's possible for the
parent to wait on the child process without having the child
setpgid on itself. This eliminates spurious hangs on ppc
darwin caused by either a race condition between vfork and
execvp, or a bug in the vfork implementation.
Added a test to ensure we don't try to read from the
stderr pipe descriptor if the descriptor's not valid.