Only set the screen right before triggering show(), otherwise it can mess
up for reasons I don't know.
Also I prefer not to pass the screen in the constructor, given that we
move the DesktopView instances across screens and it gives the wrong
impression that the view is tied to the screen.
Rename removeDesktop -> removeScreen
Embrace removeScreen as the procedure to disable a screen.
Don't delay destruction of the panels either, the screen could have been
deleted by then.
::shiftViews seemed like a good idea, but it clearly was not. I promise I
was not on drugs when I decided to use it.
Instead, take a recursive alternative, like we did with insertScreen that
will take care about panels and views.
this makes the desktops and panels more deterministically
follow the primary screen
* adaptToScreen is useless per se in moveEvent, but what's worse will cause a recursion loop
* disconnect the geometry sync from the old screen
CCBUG:335710
since people find it too weird, hide dashboard from task manager
*but* it's going to stay under the panel, and windows are still
going to be capable to cover it
BUG:332691
Set all the winId dependent stuff whenever it changes, windows are recreated
upon screen change and we need to make sure the set properties are
honored after changing screens.