Handle exec() failures

die if exec() failed (because e.g. inotifywatch is not found or not
executable).
Handle more waitpid return values

Additionally, use ${^CHILD_ERROR_NATIVE} instead of $? for the POSIX
W* macros.