Integrate QWindow::Visibility into Compositor API

This enhances the onscreen_visibility extension to use QWindow's
visibility API. This way, the compositor can set the QWindow::visibility
on a Qt client. Any client that updates its window type through wl_shell
will also have its QWaylandSurface::visibility property updated, and the
compositor can choose to composite the surface accordingly. This also
simplifies exposure handling in QWaylandWindow so that it can use the
base implementation.

The existing use of this extension, setClientRenderingEnabled, is kept for
compatibility, and maps to QWindow::Hidden (false) and
QWindow::AutomaticVisibility (true).

Change-Id: If009649b98c792ca79585fbb09ea7912efeef7da
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
Handle close of transient children upon window destruction

Transient window behavior is delegated to the platform, as it is intended
as a hint to the window manager. This makes clients close transient child
windows when the transient parent is closed, defining the "expected"
platform behavior.

Change-Id: I1c75489a6419cc83712fcbb64a9a9e2073552272
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
Destroy surface by force when not destroying an extended surface

As QWaylandSurface doesn't offer a public property stating if the surface
is extendeded (yet), let destroySurface() act like destroySurfaceByForce()
for non-extended (non-Qt) surfaces.

Change-Id: Ib8cb372b446404f744ebc07d1e2d8c68a39d97a7
Reviewed-by: Jan Arne Petersen <jan.petersen@kdab.com>
Reviewed-by: Andy Nichols <andy.nichols@digia.com>