Add output when commands with no output are complete

I'm trying to track down when some commands break down
Add a session context manager and move everything to it

I don't know why but we're still leaking sessions that
are timing out. There's not a good reason for that - we
should have perfect control of when our sessions close.
So, it's time we start using something unavoidable -
context managers.