Don't bind _wl_fullscreen_shell for all interfaces with version 1

String compare needs to be equal 0 otherwise we bind _wl_fullscreen_shell
for each and every interface with version 1.
Show and hide output windows whith fullscreen-shell when really necessary

Connect to visibleChanged() to know when the output window is really
shown or hidden and call fullscreen-shell requests accordingly.
Disable output window decorations when using fullscreen-shell

Add Qt::BypassWindowManagerHint to skip shell surface for output
windows otherwise we'll see the decoration.
fullscreen-shell: Don't force a particular mode

When Green Island is nested into another compositor we'll use the QScreen
backend for KScreen which means that the outputs configuration will be
picked up from the other compositor.

Being the output configured the same we don't need to ask for a different
mode, the other compositor is already good to go.
launcher: Make sure we quit when the compositor fails
launcher: Use QScreen KScreen backend with full screen shell
fullscreen-shell: Correctly retrieve wl_output

When running nested in a fullscreen-shell capable compositor, KScreen
will use the QScreen backend hence we can retrieve the wl_output object
from there, using the native interface.
Bail out if fake screen configuration is used when nested
launcher: Propagate system environment to the compositor

Don't lose paths or other environment variables.
launcher: Start compositor only when fullscreen-shell socket is available

Otherwise Green Island will obviously fail.