gssh: GSshChannelOutputStream: Fix obvious thinko in synchronous reads

So I'm not sure we can really support synchronous operations sanely...
we need to iterate the main context that's actually doing the socket
poll.  But fix this obvious thinko.
gssh: Attach socket source to provided maincontext, not default

Otherwise the whole model is broken and we may do calls in the wrong
thread, etc.
gssh: Avoid a bad reentrance in state transition

We need to loop after returning, not fall through the switch, because
the caller may have changed the state again.
gssh: Improve a debug print
gssh: Check for remote EOF in input stream reads

A read of size 0 can mean either EAGAIN or it could mean remote EOF,
we have to call ssh_channel_is_eof() to distinguish.