gateone.js:  Modified GateOne.Utils.getRowsAndColumns() slightly to make it more accurate.
gateone.js:  Added a new WebSocket action: `go:user_list` which calls GateOne.User.userListAction().  It just stores the list of connected users in GateOne.User.userList and triggers the `go:user_list` event with the userList as the only argument.
gateone.js:  Added `GateOne.User.listUsers()` which sends the `go:list_users` WebSocket action to the server which results in the aforementioned WebSocket action being called.
app_terminal.py:  Added TerminalApplication.get_sharing_permissions() which is associated with the `terminal:get_sharing_permissions` WebSocket action.  It sends the `terminal:sharing_permissions` WebSocket action to the client the same way that TerminalApplication.set_sharing_permissions() does.  It also triggers the `terminal:get_sharing_permissions` event with the terminal number as the only argument.
terminal.js:  Lots of changes to how terminal dimensions are detected to make such calculations more reliable in certain edge cases (e.g. disabled scrollback buffer, embedded stuff, etc).
terminal.js:  Changed how/when GateOne.Terminal.alignTerminal() is called in many places.  It is now de-bounced everywhere and you shouldn't have to wait so long for it to do its thing anymore.
terminal.js:  Added a new WebSocket action:  `terminal:get_sharing_permissions` which corresponds to GateOne.Terminal.sharedTerminalsAction().
terminal.js:  Added/updates lots of functions related to terminal sharing.  Still lots to do though (and lots of testing--terminal sharing has an unstable API for now while I work things out).  Terminal sharing is a sophisticated work-in-progress so please bear with me while I hammer out the code in not-quite-there-yet chunks.
terminal.js:  Modified GateOne.Terminal.onResizeEvent() slightly:  If the scrollback buffer is disabled (set to 0) it won't bother setting the height of the <pre> element inside terminals.  This should ensure that--when scrollback is disabled--all terminals are bottom-aligned instead of the mishmash of bottom/top-aligned situation that it was before this change.
Themes:  Minor tweaks to the global themes to make input elements and forms look better.
gateone.py:  Added the ability to authenticate purely via the WebSocket *without* requiring that API authentication be enabled.  That is, if the client has the necessary (encrypted) authentication data they can use it to gain access without having to make an AJAX call to the /auth URL.
gateone.py:  Modified all RequestHandlers to set the 'Server' header to 'GateOne'.  I chose not to list the version information because I consider it unnecessary information disclosure (why let an attacker easily enumerate the versions of things?).
gateone.py:  The `BaseHandler()` class which most RequestHandler classes (e.g. MainHandler) inherit from now has an `options()` method that complies with the W3C spec.  This is to make it so that default HAProxy monitoring works without having to write something special for Gate One.  I also added some JSON-encoded metadata to the BODY of the response since it could be useful in the future.  This should address the HAProxy issue reported in #293 (https://github.com/liftoff/GateOne/issues/293).
gateone.py:  The `BaseHandler()` now uses the `set_default_headers()` function (feature of Tornado) to set the 'Server' and 'X-UA-Compatible' headers.  This should ensure they're set properly for all subclasses.
gateone.py:  The `HTTPSRedirectHandler()` is now a subclass of `BaseHandler()` so it automatically get the `options()` method (keep code duplication down).
gateone.py:  The `ErrorHandler()` now sets the 'Server' header.
gateone.py:  Moved the API authentication code that lived inside of `ApplicationWebSocket.authenticate()` into its own function, `ApplicationWebSocket.api_auth()`.  Also optimized it a bit and made it store the entire user object in the user's 'session' file instead of just the 'upn' and 'session' (no reason to be that picky).
gateone.py:  Added a new attribute to ApplicationWebSocket:  self.base_url.  It holds the URL that was used to access the Gate One server.  *Very* useful in embedded situations where you want to serve a file from the Gate One server instead of the server hosting the app.
gateone.js:  Fixed a bug that was preventing the user info/logout link from showing up properly.
gateone.js:  Changed `GateOne.Utils.pingTimeout` to `GateOne.Net.pingTimeout` everywhere it was used (since it makes more sense).
gateone.js:  `GateOne.Net.connectionError()` now clears GateOne.Net.pingTimeout in addition to GateOne.Net.keepalivePing.
gateone.js:  Made a few minor tweaks to `GateOne.Logging.init()`.
Themes:  Added a bit of 'margin-right' to '.✈user_info' to make it line up better.
app_terminal.py:  Fixed a bug where fonts would not be downloaded properly in embedded situations.
app_terminal.py:  Fixed a bug where terminal titles were not being sent when a user connected to a terminal the first time (after gateone.py restarts).
terminal.js:  Increased the pastearea.onmousemove timeout (where it shows itself after hiding itself) in order to reduce incidents of "lost clicks" (where you click on a terminal but it doesn't get set active).  500ms seems to work pretty well in my testing.
terminal.js:  Fonts and color schemes are now enumerated immediately after all JS is done loading.  This is to populate the GateOne.Terminal.fontsList and GateOne.Terminal.colorsList, respectively (for use in embedded situations).
termio.py:  Added an additional 'sleep .1' to the command that gets called by 'spawn()'.  This is to ensure there's enough time to attach things like title callbacks (to the terminal emulator) before the underlying program gets run.
termio.py:  Improved a few useful comments here and there.
auth.py:  The 'Server' header is now set inside of `BaseAuthHandler.set_default_headers()` so any requests going to /auth will reply with the correct value ('GateOne').
gateone.js:  Tweaked `GateOne.Utils.getEmDimensions()` to be more accurate with larger screen sizes.
terminal.js:  Tweaked `GateOne.Terminal.sendDimensions()` to be more accurate in terms of rows/cols with larger screen sizes.  Also set the default 'rowAdjust' value from 1 to 0 because of the new way rows are calculated (which are just freaky bizarre because of the way browsers calculate line sizing in embedded .woff fonts).
terminal.js:  From now on, if you set scrollback to 0 (disabling it) the terminal will have its height set to 100%.  This ensures that text never gets cut off (ever so slightly) at the top.  It also has the side effect of making terminals top-aligned again.  Not my preference but it doesn't really matter since it is only ever a few pixels worth of alignment anyway.
termio.py:  Reverted the earlier change that added the extra 'sleep .1;' to the executed command.  Turns out this messes with stuff that needs to run the very moment a command is executed (e.g. Ctrl-L).
Added an Upstart script for Ubuntu and tweaked gateone-debian.sh to use it when present.
setup.py:  The aforementioned upstart script will now be automatically installed if Upstart is detected.
Added missing gateone.conf (upstart script).
Fixed the debian init script (was only working on Ubuntu)
logviewer.py:  Did a bit of code organization.
logviewer.py:  `flatten_log()` now uses the rows/columns metadata embedded into the log when it instantiates the terminal emulator.
logviewer.py:  Added a '--metadata' command line option that prints out a given log's metadata to stdout.  If it detects you're using it interactively it will pretty-print the JSON data to make it more human-readable.
logviewer.py:  Improved the '--flat' command line option so that it handles the 'cursor_right()' escape sequence better.  The output is MUCH improved for stuff like that now.
terminal.py:  Fixed a bug in `cursor_right()` where it would throw an IndexError if something tried to send the cursor past the right-hand edge of the screen.
terminal.py:  Fixed a bug in `cursor_left()` where it would throw an IndexError if the cursor was past the edge of the screen (due to an escape sequence that put it there).  This (edge case/strange situation) should now merely result in the cursor's (virtual) location being adjusted to the left as it should.
terminal.py:  Reverted my previous change to `Terminal.cursor_right()` and made it work just like `Terminal.cursor_left()` (where it just ignores the fact that it is sending the cursor's virtual location past the edge of the screen).
termio.py:  Added an exception check for the situation where a log is incomplete and throws an EOFError.
Merge branch 'master' of https://github.com/dlx1986/GateOne

Conflicts:
	gateone/applications/terminal/app_terminal.py