Get the source code closer to working for python 3.

All of the changes are portable and should work in both python 2 and 3. It is still not fully working for python 3 but it is a bit closer. If anything... it is good practice to write code that works in both python 2 and 3.

For this part:
```diff
    self.run()
except curses.error:
     self.restore_screen()
--- (exc_type, exc_value, exc_traceback) = sys.exc_info()
--- raise exc_type, exc_value, exc_traceback
+++ raise
```
I believe the intention was just to restore the screen before re-raising the same exception. `raise` with no arguments does that exactly. Also the previous method did not work for python 3.