1. RemoteDebugger now runs user code in subprocess MainThread
2. run.py: move exception printing to toplevel to allow access from main()
3. Clarification in PyShell.py: when the subprocess is restarted, the
   debugger GUI is reused with a fresh instance of the subprocess
   debugger.

M PyShell.py
M RemoteDebugger.py
M run.py
diff --git a/Lib/idlelib/RemoteDebugger.py b/Lib/idlelib/RemoteDebugger.py
index 41f910f..bdcef51 100644
--- a/Lib/idlelib/RemoteDebugger.py
+++ b/Lib/idlelib/RemoteDebugger.py
@@ -300,7 +300,7 @@
 
     def run(self, cmd, locals):
         # Ignores locals on purpose!
-        seq = self.conn.asynccall(self.oid, "run", (cmd,), {})
+        seq = self.conn.asyncqueue(self.oid, "run", (cmd,), {})
         self.shell.interp.active_seq = seq
 
     def get_stack(self, frame, tbid):