NEW DEPENDENCY:  concurrent.futures (it's included in Python 3.2+).  Install it with 'sudo pip install futures'.
NEW MODULE:  go_async.py.  It has some awesome classes for executing things in an efficient, concise, asynchronous fashion.  It's the reason for the new concurrent.futures dependency.
gateone.js and terminal.js:  Switched to a more reliable transitionend event detection method since it wasn't working properly in Firefox.
gateone.js:  Fixed a bug with `GateOne.Visual.stopIndicator()` where it wasn't working in Firefox.
gateone.py:  Added a shortcut to `self.current_user` so that auth.py doesn't get confused and raise an AttributeError exception when a user's authentication information has expired.
gateone.py:  Moved the code that saves the PID file down below the code that calls drop_privileges() so we don't end up with a permissions problem when it comes time to remove or re-create that file.
gateone.py:  Gate One will now automatically empty its cache dir every time it quits.  Yeah, it's not as efficient this way but it's a lot safer.
gateone.py:  Removed the `require_auth()` function since it is no longer used (deprecated by the `@require` decorator).
app_terminal.py:  Fixed a (cosmetic) bug where you'd get an exception in the logs if the client sent a 'terminal:kill_terminal' WebSocket action to the server before it had a chance to run `TerminalApplication.terminals()`.
gateone.py:  The "enabled_applications" and "enabled_plugins" settings are now case-insentive.
gateone.py:  Fixed a bug in `ApplicationWebSocket.list_applications()` where it wasn't working if you had explicitly set some enabled_applications.
app_terminal.py:  The `term_log` function is now setup inside of `TerminalApplication.__init__()` instead of (just) after `authenticate()` so we don't get (cosmetic) exceptions in the logs if a client sends the "terminal:get_terminals" WebSocket action before the `authenticated()` function gets called (really tiny window where that can happen but I managed to reproduce it twice in a reconnect situation so the fix was necessary).
app_terminal.py:  Changed a bunch of functions using `self.policy` to grab the latest policy every time they're called.  This is to make it so that the latest settings get applied if they're changed (gateone.py has a process that reloads its current settings every 5 seconds or so).
utils.py:  Enhanced `AutoExpireDict`:  Removed the ability to pass 'timeout' and 'interval' keys to the `update()` function so you could use those values in your own instance of the dict (just use mydict.timeout and mydict.interval directly instead).  Also made it so that the `PeriodicCallback` will stop itself if there are no more keys remaining.  It will immediately start itself back up as soon as a new item gets added.  Lastly, I added some docstrings that were missing on a few functions inside the class.
utils.py:  `get_plugins()` and `get_applications()` now perform a case-insentitive comparison when checking if a plugin or application is to be consider enabled.