plasma-shell: Add initial shell implementation

Start implementing the protocols discussed on the Plasma mailing list.
More commits will follow because this requires some changes to
handle views for shell surfaces rather than application surfaces.
Add a surface view for shell windows

Shell windows have different needs compared to application windows
hence we add ShellWindowView to take care of them.
plasma-shell: Add shell surface interface

Just like xdg-shell this protocol has now an interface for surfaces.
Avoid triggering hot corners when the pointer is moved out

Save the last time it was triggered to avoid this.
wl-shell: Use global coordinates when moving
xdg-shell: Use global coordinates when moving
xdg-shell: Move improvements from wl-shell

Restore maximized windows when moved after a certain threshold and move
parent windows along with transient when the latter is moved.
Use Output instead of QWaylandOutput where possible
Create a custom surface to handle multiple outputs better

Move global position to the actual surface which inherits
from QWaylandQuickSurface.

By doing so we are sure the global position is stored just in
one place, that is the surface, instead of all the views that
also need to be kept in sync.
Enable QML debugging

Only when build type is RelWithDebInfo or Debug.
Always define QT_COMPOSITOR_WAYLAND_GL
Wrap code in a namespace and rename Surface to QuickSurface

Separate code with the GreenIsland namespace.

Rename Surface to QuickSurface because QtCompositor has a class named
like that, although it's private we use it here and there so better
safe than sorry and avoid any confusion.