Add ability to override remote command to class SSHLogin.
Add ability for user to override remote command.
Remove printf and fprintf, and disable std{out,err} buffering.

The printf implementation was really just working around buffering issues
(although I didn't realize it at the time). The fprintf one didn't seem to get
invoked at all, which is how the problem surfaced. The better solution is to
lean on existing implementations and disable buffering properly.
Allow empty passphrases on SSH keys.