fullscreen-shell: Always register to version 1
Rearrange the way shell windows are managed

Branch the code when mapping and unmapping surfaces for surfaces
belonging to applications or shell based on the fact that shell surfaces
always have only one view which reports the role.

Set z-index to layers to make sure they are stacked in the right order.

Remove the old surface roles from Compositor.

Shell surfaces are mapped only when a role is defined.
plasma: Fade in when the desktop is ready
Add splash surface role and rearrange layers

Some desktops like Plasma have a little program that displays a
splash screen so we add a specific role for its surfaces.

We rearrange the layers and now the black rectangle used for fade-in
and fade-out effects is now a layer for splash screens.

The fade effect still remains so that desktops without a splash screen
are still supported.  As a nice side effect this will also make
Plasma splash screen go away with style.
Don't intercept mouse clicks with hot corners
Make it possible to map shell surfaces multiple times

This way we can handle role changes between map and unmap.
Draw default background from ScreenView

Workspaces must inherit from plain Items otherwise the image will completely
hide the desktop layer because it's not transparent.

Turn the background layer into an Image in order to draw the default
wallpaper.
fullscreen-shell: Set version only when building against qtwayland 5.4

It was a new addition for the 5.4 branch, but it breakes the build with
qtwayland < 5.4 so we guard the constructor to avoid problems.
plasma: Implement surface object destruction
Make context menus working when the parent is a shell window

Find the right transient parent view, don't assume it's an application
window because it might be a shell window, that is the case for context
menus for the desktop.
wl-shell: Break popup when it is unmapped
plasma: Show splash layer when the splash role is set

The splash role is set on a surface when the client wants to show a
splash screen.

If the shell is already started, the layer is hidden hence we need to
show it in order to display the actual splash screen.
Setup mouse pointer

Fix mouse pointer setup and remove cursor layer because we are not going
to do anything from QtQuick on mouse pointers.
plasma: Silence warnings about unused variable
plasma: Raise a protocol error if the client wants to set the same role

Some roles can only be assigned once, if another shell window for the
very same output already has the role requested we fail with a protocol
error.
Set current layer when needed
plasma: Update protocol
fullscreen-shell: Check QtCompositor version rather than Qt version
plasma: Initial effects implementation
wl-shell: Fix popups

Remove popup only when unmapped.