fds: Introduce pipe_cloexec()
Replace all calls to pipe() with this new function, which checks
errors for us, and also sets both fds to close-on-exec.
There are some minor functional changes:
* Error messages from pipe() failing are now less detailed about the
context. This is not important.
* The signal self-pipe is now cloexec too. This is at worst harmless.
* When execing userv-ipif we rely on cloexec to close the spare
copies of the pipe ends.
* The stderr self-pipe spare writing end is redudantly made cloexec
even though it is about to be closed shortly afterwards.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>