remove uneeded require

not sure what this was, tests run fine without it.
Wait for child process to die in case of critical errors

Ported the regression test from OHAI-455 to mixlib-shellout, which
revealed a race condition in the way shellout reaps the child after a
failed exec (most commonly caused by attempting to run a command that
doesn't exist). The call to waitpid2 used WNOHANG to avoid hanging
indefinitely if an error was caused but the child process was still
alive, but this results in the child process not getting reaped if it
exits after the call to waitpid2. In a single run of the stress test,
this occurred 94/100 times, so it is very likely that mixlib-shellout
will leak zombies for the ENOENT case without this change.
Use blocking waitpid only on ENOENT

This is a compromise that prevents us from leaving zombie processes
around after a failed exec raises ENOENT, but prevents us from blocking
(possibly forever) on timed-out commands. The latter case can cause
zombies, so this is not optimal for all cases. See MIXLIB-16 for a
proposed enhancement to solve that case.
Fix MIXLIB-17