Handle pid file appropriately in forked process

Code and tests to keep a daemonized chef-client's forked process from
reaping the parent pid file.

Without this fix a forked process will reap its parent's pid file,
breaking init script functionality.  A start call to the init script
will then launch a new process, since the init script is ignorant of the
already running process.

A process is considered a fork in case the chef-client daemon is
running and the process pid is not equal to the pid defined in the
pidfile, or if the chef-client daemon is not running and the parent pid
of the process is 1, implying that the process was a fork at some point
and has become orphaned.