async.py:  Fixed a bug where `AsyncRunner.call()` was memoizing results when it shouldn't be.
async.py:  New Scheduler class that can be used like cron for functions.
Themes:  Changed the 'position' of '.✈workspace' from 'static' to 'relative'.  This seems to work around the browser bug where sometimes--if the page loaded really fast--Chrome would place the toolbar above the scrollbar making it difficult to click one or the other in that area.
async.py:  The default value for the 'wait' keyword argument passed to both `AsyncRunner.shutdown()` and `MultiprocessRunner.shutdown()` has been changed from `True` to `False`.  The reason is that the 'wait' argument didn't do what I thought it did...  Turns out that if you pass `wait=True` the shutdown call will block until all asynchronous functions have completed.  Even if you pass `wait=False` the program will not exit until all processes are complete (so that's not what it controls/there's nothing to be concerned about when using `wait=False`).
core/server.py:  Fixed a bug where `ApplicationWebSocket.base_url` wasn't getting the port set correctly in certain versions of Python.  This was preventing fonts from loading properly.
termio.py:  Fixed a bug where pasting large amounts of data into dtach'd terminals could result in the terminal closing suddenly/strangely with no error message or anything interesting at all in the logs (wow that was a hard one to pin down!).
gateone.js:  Fixed a bug where sometimes after loading the page (usually when resuming terminals after restarting the gateone server) the terminal width/height wouldn't be detected properly.  I did this by adding a double-check 2-second-long setTimeout() call to `GateOne.Visual.updateDimensions()`.  Hopefully that's long enough to be post-page-load but short enough not to cause jitter when creating new terminals.
core/utils.py:  Fixed a bug where plugins would not be found if your 'gateone' directory lived inside of another 'gateone' directory somewhere.