TODO
More prints about slave waits and use printer for top-level prints
Oops, precedence bug
Use finally with diagnostics about errors during cleanup
Extract Lib.Exception (finally)
Only sendGo if handleDelayedInput returns successfully
Deadlock fix: When killing slave's subprocess, slave's connections are *not* guaranteed to eventually terminate. Need to kill them explicitly
Printer.Id type and Printer.idStr
Add Timeout warnings about things that should timely complete, to localize deadlock bugs