(TBD) Use spawn directly

Previously, we were using Open3.pipeline_w to spawn the watcher
process, and then calling Process.detach to ensure we don't
create a zombie process.

However, pipeline_w itself calls Process.detach in an ensure
block, and calls Thread#join on the reaper thread returned by
Process.detach.

This can lead to deadlock, since the main ruby thread is
waiting on the reaper thread, which is waiting on the newly
spawned reboot watcher process. And the reboot watcher process
is waiting for the ruby process to exit.

This commit eliminates the use of pipeline_w and just uses
spawn directly. As a result, the main ruby thread will not
wait for the reaper thread, since we're just going to exit.