terminal.py:  Renamed Terminal.expanded_modes to Terminal.expanded_mode_handlers to better reflect it's purpose.  A new Terminal.expanded_modes dict has been created to track the state of expanded modes.
terminal.py:  Changed how (most) expanded modes are handled...  Instead of having dozens of little functions that all do the same thing (toggle some setting True/False) I've created expanded_mode_toggle() which--when used with functools.partial()--can toggle *any* expanded mode with any arbitrary name/value.  This way is much simplified over what it was.
Terminal Themes and terminal.css:  The span.screen and span.scrollback classes have been moved from the themes into terminal.css since they're not really something that are themeable (they're more programmatic elements).
app_terminal.py:  Changes how terminal expanded modes are sent to the client.  Instead of *just* sending mode 1 (application cursor keys) it will now send any mode gets set/reset.  This will make it easier to add support for more modes in the future.  The client will simply ignore those modes that it doesn't know what to do with (yet).
terminal.js:  Added a new function:  GateOne.Terminal.xtermEncode().  It just converts a number into an xterm-encoded character (necessary for mouse reporting).
gateone.js and terminal.js:  Added support for mouse reporting (just expanded modes 1000 and 1002 for now).  This should close issue #190 (https://github.com/liftoff/GateOne/issues/190).  Try it:  open vim and execute :set mouse=a