Refactoring service supervision scripts.

This is a work in progress. In general, I'm fixing edge cases, enforcing
preconditions, and improving error handling.
Show PIDs; don't hang in svc-down if a service is spinning.
Fix: Write exit accounting data at the proper time.
Suppress "interrupted system call" message properly.

This error message gets emitted from the `_supervisor_process` thread when a
supervisor_stop or package_remove operation closes the "service down" FIFO.
It's safe to ignore it: `_supervisor_process` is about to terminate anyway.
We had the right idea originally, but put the redirection in the wrong spot.