go_async.py:  Added `AsyncRunner.running` as a mandatory property that must be overridden by subclasses.
go_async.py:  Modified `AsyncRunner.shutdown()` to use the `running` property instead of an explicit check that looks for the executor.
go_async.py:  The executor is now set to `None` inside `AsyncRunner.__init__()` with the expectation that it will be properly assigned in subclasses.  This means we no longer need explicit checks for the presence of the executor attribute.
go_async.py:  Renamed `MultiprocessRunner.instance` to `MultiprocessRunner.executor_instance` to better reflect how it is used.
go_async.py:  The `MultiprocessRunner` will no longer shut down the executor if there are other instances in use.
go_async.py:  Added some useful debug logging here and there.
sso.py:  Added the ability to specify a keytab (path).
gateone.py:  Added 'sso_keytab' to the list of authentication options when generating a new 20authentication.conf.
terminal.py:  Reduced the default timeout for the `HTML_CACHE` (which is an `AutoExpireDict`) from 5 minutes to 1.  There's really no need to keep lines around in memory that long.