Cherry-pick three non-test changes from the testing branch:

* Minor refactor to the way the traceback list is built
* Remove the (according to Jason) unused "origin" member of RemoteException
* Change to str(exc) from repr(exc.message), for Py3 compatibility and good sense

Needs testing!