Don't rely on os.wait() blocking

Before this fix which was included in eventlet 0.10.0:

https://bitbucket.org/which_linden/eventlet/issue/92/eventletgreen-override-of-oswaitpid

the os.wait() wrapper in eventlet would not block if no child processes
had exited. This was clearly buggy behaviour and os.wait() no blocks
correctly. However, it appears it now does not return if the parent process
was interrupted by a signal. This means that you can't kill the parent process
and have the child processes cleaned up gracefully.

To avoid all these issues, switch to non-blocking wait behaviour. We use
WNOHANG with waitpid() to poll for an exited child process and, if there
is none, we yield to other green threads and sleep for a short period.
This means excessive CPU usage, though, which will be tracked by
bug #1095346.

Check pid to avoid some unnecessary warning/info messages in the logs

Fixes LP #1094076

Change-Id: I783fac652376c2daa9d591403b9f4c1fe9523043