MAJOR CHANGES/IMPROVEMENTS in this commit.  New settings format, new application support, relocated plugins, new functionality, etc etc.  See below for the details.
NEW GATE ONE APPLICATION:  Terminal.  Actually, it's the same terminal from before but it now exists in its own directory in the applications dir.  It even has its own plugins!  Some work still needs to be done to migrate terminal-specific stuff out of gateone.py but the hardest part is now done.
NEW SETTINGS FORMAT:  See all the new stuff in the 'settings' directory.  10server.conf will replace the usual server.conf and there's all sorts of new authentication and authorization options available as well.  More stuff like this is coming!  The whole point of this architecture change is to provide more fine-grained control over what users can do, when they can do it, how often, etc.  The change to an 'applications' directory also paves the way to supporting SFTP, X11, and more capabilities.
utils.py:  Renamed load_plugins() to load_modules().  This more accurately reflects what it does (it can load any Python module in the given list).
utils.py:  Added a new function:  get_settings(path).  It will read all files ending in .conf at a given *path* that contain JSON and return an RUDict object with the respective .conf file settings.  It will automatically strip JavaScript-style comments before decoding the JSON.
utils.py:  Added a new function:  minify(path_or_fileobj, kind).  It will minify JavaScript and CSS files using slimit and/or cssmin if they're available.  It just returns the files as-is if those modules aren't available; giving the user a message indicating they should install those modules.
utils.py:  Added a new function:  settings_template(path, **kwargs).  It will render settings templates like 'templates/settings/10server.conf' using the given *kwargs*, automatically remove blank lines (so they look nice/easy to read).
utils.py:  Added a new function:  bind(function, self).  It's just a convenience returns partial(function, self).  This allows us to write functions for things like WebSocket actions in a more natural fashion.  The code for functions like that will be outside of a class but will be written as if it were inside of it:  def foo(self)
gateone.py:  Changed the name of load_plugins to load_modules everywhere.
gateone.py:  Added a new class:  GOApplication.  It will be the base from which all Gate One applications are built.
gateone.py:  TerminalWebSocket has been renamed ApplicationWebSocket.  This is because the 'terminal' part of Gate One will soon become just another 'application' that can be run via that WebSocket.
gateone.py:  Renamed a few variables here and there to clarify their purpose (nothing interesting).
gateone.py:  Relocated some terminal-specific logic to occur that the end of various functions inside of ApplicationWebSocket.  This is to make it easier to move them into a separate GOApplication later.
gateone.py:  Changed the default command to use '.ssh' for the path to known_hosts.  Also added a warning message and convenient auto-fix if the old location is detected.
gateone.py:  Added a new method to ApplicationWebSocket:  send_js(path).  It uses the 'load_js' WebSocket action to send a JavaScript file to the client (to be loaded dynamically).
gateone.py:  Added four new methods to ApplicationWebSocket to handle various events and eventually replace the various PLUGIN_HOOKS: on(), once(), off(), and trigger().  They work similarly to the functions of the same name in gateone.js (GateOne.Events.on, once, off, trigger).  Calls to trigger() have been strewn throughout the code so that plugins and applications can take advantage of them.
gateone.js:  Modified GateOne.Utils.runPostInit() slightly:  It will now check if a module has already had its init() function called and will neglect to call it in that situation.  This will allow for running GateOne.Utils.runPostInit() at-will whenever a new plugin is loaded without having to worry about calling _every_ plugin's init() or postInit() functions.  Essentially, this makes it so I can be lazy about late-loading scripts and just call runPostInit() whenever a new script is added to the page.
gateone.js:  Removed postOnLoad() backwards-compatibility support from GateOne.Utils.runPostInit().  It has been deprecated for long enough--time to let it go.
SSH Plugin:  Fixed a bug where the KnownHostsHandler was still looking for the old 'ssh' directory path.
SSH Plugin:  Fixed a few places where ssh_connect.py was still using 'ssh' instead of '.ssh'.
SSH Plugin:  Fixed a bug where duplicate session sometimes wouldn't work because it took a little longer than expected for the new terminal to come up.
Themes:  Added '#{{container}}' before all the SVG-specific classes to ensure there's no conflicts when embedding.
Themes:  The #{{container}} style now has the background color set to match the '.terminal pre' style.  This should make playback exports look better.
app_terminal.py:  Initial public version.  Many changes in regards to how plugins are initialized and how their functions are initialized...  The use of the 'tws' argument for WebSockets has been replaced with the use of the utils.bind() method.
setup.py:  Added logic to move existing terminal-specific plugins into the applications/terminal/plugins directory (before they're updated with the latest code).
Mobile Plugin:  Removed mobile.py and moved the <head> bits to Gate One's index.html.  There's realy no reason that needs its own Python module.
Documentation:  Started updating various docs to reflect all the above changes.