BEHOLD THE NEW WORKSPACE WORKSPACE!  This is the beginning of a wide array of applications that will be available soon for Gate One.  Terminal was just the start!  To go back to the old behavior either just get rid of the Example app (rm -rf /opt/gateone/applications/example) or disable it in your settings using the 'enabled_applications' option (goes under the "gateone" section; e.g. "gateone": {"enabled_applications": ["Terminal"]}).
TIP: Try adding multiple "commands" to your 50terminal.conf!
Everywhere:  Changed how application metadata is assigned.  Out with the old (name, icon, etc) and in with the new (just an "info" dict).
gateone.js:  `GateOne.Visual.closeWorkspace()` now fires "go:close_workspace" instead of "go:workspace_closed" to better match the other workspace-related events which all *end* with _workspace.
gateone.js:  `GateOne.Visual.newWorkspaceWorkspace()` is now the default action that is called when you click the + icon or type Ctrl-Alt-N.  If you only have one application installed--and it has no sub-applications--it will simply open up a new workspace containing that application.  So by default if users remove the Example application (or disable it) the usual behavior of opening new terminals with the + icon will return.
gateone.js:  Added `GateOne.Visual.setTitle()`.  It's just a shortcut for setting the title on the side of the window ('✈sideinfo' element) that happeens to scale it down to fit within the space provided (in case of a long title or tons of toolbar icons).
gateone.js:  Changed the text of the alert box inside of `GateOne.Net.reauthenticate()` so that it is more ambiguous to match all authentication failures.
terminal.js:  Modified to use the new `GateOne.Visual.setTitle()` function.
golog.py:  Modified `JSONAdapter` so that it won't log '{}' at the start of a log line if the 'extra' dict is emtpy.
app_terminal.py:  Fixed a cosmetic bug where the list of "Active Plugins" was including all the individual JS/CSS files instead of just the parent plugin name.
app_example.py:  Fixed a cosmetic bug where the list of "Active Plugins" was including all the individual JS/CSS files instead of just the parent plugin name.
app_terminal.py:  Introduced a new way to define "commands":  You can make them a dict with a (mandatory) 'command' and an optional 'description'.  The important part is that more metadata is possible.  With the exception of the actual "command" (which is removed for security reasons so as to not reveal paths and variables), anything you set inside a "command" dict will get sent to the client and will be accessible from plugins via `GateOne.User.applications`
app_terminal.py:  Fixed a bug in `timeout_session()` where it wasn't passing the right keyword argument to `kill_session()`.
ssh_connect.py:  Added readline back so you don't get ^L when you type Ctrl-L (or it is sent programmatically to ask for a screen refresh).
Themes:  Changed the name of '.✈toolbar_container' to just '.✈toolbar' and changed the existing '.✈toolbar' to '.✈toolbar_icon' to better reflect what these classes are for.  Also changed the use of these classes throughout Applications/Plugins to reflect the new names.
Themes:  Tweaked lots of stuff related to the New Workspace Workspace.
gateone.py:  Added a new logger:  sync_log.  It is for file transfers involving Gate One's synchronization protocol.  It stores logs in logs/gateone-sync.log.
gateone.py:  `ApplicationWebSocket.open()` now keeps track of how many browsers a user has open using the same session.  It does this by adding the client_id to the user's session in the SESSIONS dict.
gateone.py:  Added a check to `ApplicationWebSocket.on_close()` to make sure we leave the 'last_seen' value as 'connected' if the user still has a browser connected somewhere.  This should close issue #302 (https://github.com/liftoff/GateOne/issues/302).