fix(fleetctl): update ssh.Execute to use a PTY

This allows `fleetctl ssh` to work as expected with interactive commands
(like `toolbox`, or even just `bash`).
This change also reworks the error handling to ensure the exit code of
commands run over SSH are correctly propagated back to the client.
Finally, the semantics for copying input/output streams to/from sessions
are cleaned up (IMHO).
refactor(ssh): rip out unused sync and DRY session logic
refactor(ssh): remove Channel since it's no longer used
refactor(ssh): remove unused commit
Merge pull request #340 from jonboulle/340

fleetctl: ssh doesn't do PTY setup correctly
Merge pull request #375 from bcwaldon/stopchan

Use stop channels for event functionality
refactor(agent): Agent owns event init
refactor(agent): Engine owns event init
refactor(server): break apart server.New