Fix bad bug that caused midground jobs to fail after plush had been running for ~minute.

The problem stems from wrapping the moved stdin/stdout/stderr FDs in Handles. The Handle for stdout was only used briefly. Eventually, when that Handle got GC'd, the FD was closed by GHC's RTS. *This* in the end played very poorly with the new more aggressive code to cleanup and close FDs in forks, which died trying to close an already closed FD.

- removed closeFdSafe - it is a code smell
- added writeStr and writeStrLn utilities, reducing the pressure to use Handles
- returned Fds to Server.hs from Job.hs for the relocated original stdin/out/err Fds
- used origOut and origErr Fds for reporting now, rather than Handles wrapped around same