rewrite the command window

The command window now uses an architecture that keeps all the
different components of the command window "block" in their own
packages. Instead of allowing clients to write to the document
directly, it just exposes prompt() and display() methods that handle
all the finicky details.

Benefits of the new implementation include reduced coupling inside the
GUI, and pretty colors! Besides being pretty, the colors illustrate the
differences between "print" output, function return values, tracebacks,
and user input. Also, the command window is now monospace.

It's not finished yet: there are still a few defects that have to be
corrected.