gateone.js:  Removed a bit of redundance in terms of log messages when a connection error occurs.
gateone.js:  Modified `GateOne.Visual.newWorkspace()` to add the workspace metadata to the `GateOne.workspaces`.  Also, the "go:new_workspace" event now passes the workspace number instead of the workspace node as the only argument.
gateone.js:  `GateOne.Utils.getRowsAndColumns()` now takes an optional second argument, 'where' which works just like it does in `GateOne.Utils.getEmDimensions()`.
app_terminal.py:  Fixed a bug where you'd get an exception if the 'terminal:kill_terminal' WebSocket action was called for a terminal that was already dead.
terminal.css:  Fixed a bug where some of the classes were missing the ✈.
gatoene.js:  Changed the way Gate One works when disconnected:  Instaed of closing/removing everything it will simply display an overlay that indicates, "I am inactive".  The closing/removing stuff will now take place *after* the connection is re-established; just before everything gets re-created with fresh updated info from the server.
gateone.js:  The function that triggers "go:save_prefs" now calls `GateOne.Visual.updateDimensions()` whenever that happens.
gateone.py:  Everywhere:  Modified the way the file synchronization mechanism works so that it pretty much always sends a proper filename with each sync.  WTF?  JavaScript files always used the filename as their unique identifier but CSS files used a hash of the filename.  The reason for this was because the rendered filenames of CSS files included their original paths which would be an unnecessary information disclosure.  Now *all* files are identified by a hash of their filenames (when making API calls) but the client is also given the *original* file's (short) name.  I say, "original" because in the case of rendered CSS templates the original filename is different from the rendered filename.  The reason why I've made all these changes is so that it will be possible to list CSS files as dependencies of JavaScript and vice versa.
gateone.py:  `ApplicationWebSocket.send_message()` now uses the "go:user_message" WebSocket action instead of "go:notice".  For now it does the exact same thing but I will be modifying it in the future to include more useful metadata in the outgoing message.
terminal.js:  Added an extra sanity check to `GateOne.Terminal.sendDimensions()` to prevent the situation where we send broken dimensions to the server.
terminal.js:  Added some checks here and there to ensure that 'font.css' is loaded before we try to calculate the rows/cols of anything.
terminal.js:  Made some minor changes to reflect the new way of handling disconnection events.  Same stuff gets called just in different places/order.
terminal.js:  `GateOne.Terminal.newTerminal()` now sets `GateOne.Terminal.prevRows` and `GateOne.Terminal.prevCols` to the values that it ultimately ends up applying to the terminal.  `GateOne.Terminal.sendDimensions()` will use these values to determine if it needs to bother with sending a resize event to the server (if the detected rows/cols are the same as what are already set there's nothing to do).
golog.py:  Modified `go_logger()` to always return a `JSONAdapter` regardless of whether or not extra keyword arguments were supplied.