Call pwait(1) before builtin 'wait' to avoid it returning early due to interrupted signal
Reap child pids when possible in parallel_run to avoid PID reuse/collisions

This was causing cases where the return status in parallel_stop was
incorrect for some PIDS because they had long since stopped and had
their status collected via wait(1) already.

This now reaps children after 16 are pending, by kill 0ing them to see
if they are still alive. If they are dead, they are waited on and
removed from the PARALLEL_PIDS list with ugly substitions.
Use builtin : instead of touch(1) where possible