app_terminal.py:  Fixed a typo inside `TerminalApplication.save_term_settings()` in the name of the event it emits (had 'setings' instead of 'settings').
app_terminal.py:  The functionality of `TerminalApplication.save_term_settings()` has been moved to a new file, term_utils.py so that it may be called asynchronously.  It occurred to me that a web application embedding Gate One may wish to pass a *lot* of metadata when terminals are opened so I took that step to ensure that the read, JSON decode, JSON encode, and write operations don't block the main thread.  Also, since this function gets called for every open terminal that could add up to a lot of operations.
app_terminal.py:  The `TerminalApplication.restore_term_settings()` function has received the same async treatment as `TerminalApplication.save_term_settings()`.
app_terminal.py:  The `TerminalApplication.set_title()` function now takes an extra keyword argument, `save=True`.  If set to `False` it won't bother saving the title using `TerminalApplication.save_term_settings()`.
terminal.js:  The terminal information display is back!  So when you switch terminals it should display the terminal number and the title in a decent-enough manner.
gateone.py:  The shortcut to the IOLoop inside `GOApplication` has been renamed from 'ioloop' to 'io_loop' to match everything else in Gate One.
gateone.py:  Added shortcuts to the CPU_ASYNC and IO_ASYNC globals inside of the base `GOApplication` class so Gate One applications can make quick asynchronous calls without having to instantiate their own (no need to ever have more than `cpu_count() + 1` gateone.py processes).
go_async.py:  Added a new method: `AsyncRunner.call_singleton()`.  It works just like `call()` except it ensures that there's only ever one instance of the given function running at any the same time.  Useful in situations where a single file may be updated in different places by the same function (e.g. `TerminalApplication.save_term_settings()`).  Repeated calls to `AsyncRunner.call_singleton()` will merely result in each function being called when the previous one is complete (which is super handy!).
gateone_utils_extra.js:  Removed the try/catch block inside `GateOne.Utils.scrollToBottom()` since it really isn't necessary and it also prevents the browser from truly optimizing that function.
go_async.py:  `MultiprocessRunner()` now enforces itself as a singleton.  So you'll only get at most cpu_count()+1 gateone.py processes--even if something calls a fork() later (e.g. if dropping privileges).
go_async.py:  Reduced the timeout before `AsyncRunner` instances shut down their executors from 2 minutes to 30 seconds.  99% of the time they'll be done with all their operations in just a second or two and it only takes milliseconds for them to restart themselves (very low overhead).  It should also be mentioned that the executor shutdown process is safe:  It will wait until all futures are done before it actually shuts itself down.
gateone.js:  Fixed the issue where the grid transition was a bit jerky.