raise OSError with errno

When the child process fails to exec, we raise a non-standard OSError,
that has only a string and lacks an errno value. This patch fixes this
issue by copying childErrno onto errno and calling PyErr_SetFromErrno().
The alternative, of copying PyErr_SetFromErrno code into our own
_PyErr_SetFromChildErrno() was rejected due to its complexity.