gateone.js:  You can now rearrange workspaces via drag & drop!  This required added all sorts of drag* event functions and changes to various aspects of the grid view.  In the process of making these changes I also worked around the visual bugs (browser bugs) that make the toolbar and sidetitle show up in the wrong place after dropping out of grid view.
gateone.js:  Added `GateOne.Visual.relocateWorkspace()`.  It is a new mechanism that will make it easier for applications to support being relocatable.  By that I mean you can move the application from the current window/location to a new window or to the background (virtual location).
gateone.js:  `GateOne.Visual.disableTransitions()` and `GateOne.Visual.enbleTransitions()` can now be passed any number of elements to enable/disable transitions.  They also now use the `classList` mechanism instead of using regular expressions/`indexOf()`.
gateone.js:  Added `GateOne.Visual.swapWorkspaces()` which will swap the location of any two given workspaces (numbers).  It fires the 'go:swapped_workspaces' event when complete so that applications can take care of their own swapping (if any is necessary).
gateone.js:  Added a new "Locations" toolbar icon and several functions for controlling moving applications to/from locations (separate browser windows).  Not enabled yet though (still need to finish the GUI stuff).
gateone.js:  Workspaces now have a 'data-workspace' attribute to make it easier to figure out what workspace number a particular node belongs to.
terminal.js:  Renamed `GateOne.Terminal.moveTerminalLocation()` to `GateOne.Terminal.relocateTerminal()` to better line up with the new `GateOne.Visual.relocateWorkspace()` function.
terminal.js:  Added `GateOne.Terminal.swappedWorkspacesEvent()` which is attached to the 'go:swapped_workspaces' event.  It takes care of swapping terminals with each other after the workspaces have swapped.
app_terminal.py:  Fixed a bug in `TerminalApplication.move_terminal()` where moving a terminal to an existing location with no terminals would throw an IndexError exception.
app_terminal.py:  Added a new function: `TerminalApplication.swap_terminals()`.  It will swap two given terminals with each other (number-wise).
Bookmarks CSS:  Minor tweak to make sure bookmark tags show up at the bottom of bookmarks.
Themes:  Adjusted the z-index properties for several classes to make them seem less random.
terminal_input.js:  Added an optional 'force' argument to `GateOne.Terminal.Input.disableCapture()` as well as some other improvements to the capture-related functions.
gateone.py:  Changed how `ApplicationWebsocket.get_locations()` works...  Instead of sending a list of locations (e.g. `['default']`) it now sends a more complete dict object that contains the applications, running instances, when they were created, what "command" they're running, and their titles.