do not raise a fatal/ConnectionError when stopping a session, otherwise we show a message about how to connect when the app fails to terminate cleanly; refs #73
use a valid() method on the Shell proxy to detect if it has terminated; so we can back out of shells properly; refs #67
if shell.valid() is not available (i.e., we are running on an older version of the agent); revert to a compatibility shell that will terminate when we exit; refs #67