Properly daemonise nslcd and only exit when ready

This introduces a new daemonize module that provides functions for
closing all file descriptors, redirecting stdin/stdout/stderr to
/dev/null and a function for backgrounding an application while only
exiting the original process after the daemon process has indicated
readiness.

This is used to exit the original process only after the listening
socket has been set up and the worker threads have been started.
Close daemon pipe file descriptor on fork or exec

This tries to avoid child processes ending up with a copy of the pipe
file descriptor that is used to signal readiness of the daemon.
Remove daemon() replacement function
Only exit nslcd when daemon is ready

This removes a race condition between the exit of the initial nslcd
process (as started by the init script) and nslcd services being ready.