[panels] Panel rework.

Conflicts:

	js/ui/applet.js
	js/ui/appletManager.js
	js/ui/lookingGlass.js
	js/ui/main.js
	js/ui/panelMenu.js
[panels] show hidden panel on drag-over
[panels] set timers to null after clearing
[panels] go back to using "desktop-layout" settings key

The upstream/master branch does no longer crash on encountering an "unknown"
desktop-layout string, so we have more latitude to expand the set.
[panels] default more clearly to the bottom monitor
[panels] overview of on-monitors-changed logic

Conflicts:

	js/ui/layout.js
[panels] more panel setup overview

Conflicts:

	js/ui/layout.js
[panels] left/right monitors
[panels] more monitors-changed logic overview
[panels] detect and handle panel collisions
[panels] various minor changes

Conflicts:

	js/ui/layout.js
[panels] change the logic for handling panel-settings changes, w.r.t. hidden/unhidden state.
[panels] correct a couple of merge errors
[panels] Disable "panel flash" effect when showing panel menu.

The "panel flash" occurred if you had a hidden panel; the hidden panel
would remain visible as long as the panel menu was showing.

Conflicts:

	js/ui/layout.js
[panels] Add side-by-side panels options to the configuration dialog
[panels] reconcile with upstream/master
[panel] more reliable panel-collision detection
[panels] add a hidePanels function
[panels] make sure hot corners are initialized
[panels] call _leavePanel on hideable panel after changing panel settings

This ought to solve the problem with hideable panels refusing to auto-hide after monitor-change upheaval.