Pid returns the pid of the daemon. If the pid file cannot be read, it returns 0 with an *errors.CannotReadPidError.
If the daemon is not running the returned pid is -1.
Start starts the daemon. If the daemon is already running it returns an
*errors.CannotLockFileError because the already running daemon has the lock on
the file.