Higher level IPC abstraction (fixes 238)

This is mostly refactoring.

Fixes #238.
Just a doc issue, I think?  Not using SSH is just what we want here since that's a separate unit and is already tested elsewhere.