This lets you do things such as "test -e /foo && bar" or
"cd /tmp && blah". Remember that shell pipelines do not detect
errors in anything but the last command.
Add a wrapper that does the calls shutdown on the channel itself,
to actually cause EOF. Add integration test using remote cat.
Move shuffling stdout bytes to background, so run.run returns before
seeing EOF on stdout, and thus actually making the stdin useful.
Similarly, don't wait for EOF on stderr before returning from run.run.