Move any open fd's on start up

If the alcove binary is re-exec'ed with open file descriptors (e.g., the
valgrind log) move the fd so low fd's can be mapped to well known
numbers.
Allow file descriptors to be passed to child

All file descriptors inherited from the parent after a fork() were
closed by the child. This prevents the parent from opening a fd as root,
dropping privs and forking workers.

This change should also allow valgrind to log information about the
child processes.

Change the child post-fork init to close the parent's child fd's. Other
fd's will stay open.
Check if the fd is valid before close attempt

Suppress valgrind errors by checking if the fd is non-negative.
Set the control fd's to close on exec

Set the parent's side of the child's fds (stdin, stdout, stderr, fdctl)
to close on exec. This prevents fd's from leaking when the process calls
exec.

Without setting the fd's to close on exec, the child processes spawned
by the exec'ed process would not be terminated until the process exited:

    port -> alcove1 -> alcove2 -> alcove3 -> alcove4

        exec(alcove2, "/bin/cat")

    port -> alcove1 -> /bin/cat -> alcove3 -> alcove4

With this change, the child process exits but becomes a zombie, since
the parent will not have called waitpid to reap the process:

    port -> alcove1 -> /bin/cat -> alcove3 (defunct)
poll: scan the entire poll array