run: support control and exit via node ipc

All commands available to `slc runctl` over local domain sockets are
made available to a parent node process, if it establishes an ipc
connection to the supervisor (see `child_process.fork()`).

Also, when the ipc connection is disconnected (either explicitly, or
because the parent process exited, the child can't tell the difference),
the supervisor will exit to prevent process leaks.