Merge pull request #18 from nezticle/master

Changes needed for QtCompositor cursor surface API
System compositor and display manager integration

Initial work on the system compositor that handles graphics from boot
to shutdown and manages integration with the display manager.

Issue: #19
Create plugin instance only if JSON metadata contains the desired key

Avoid to instance plugins before even knowing whether it is the plugin
we were looking for.
Remove unused code and rename some files

Cleanup, no functional changes.
Custom log message handler

Print all messages to stdout and errors to stderr.
Fix Audio category label

Change Audio category label to "Sound".
Reported by Jatt159 on IRC.
Send frame callback for all surfaces

We want to update the shell surface and also the applications surfaces.
Let compositors implement their own code to close the shell

Compositors can now close the shell, the method will automatically be invoked
by the destructor.
Improve graphics information report

Use qDebug() so that the messages will be logged just like others and print
OpenGL information even if no EGL display can be retrieved from the native
interface.
Improve log output

Suppress debugging information for the debug output and use colors for
warning, critical and fatal messages.
Suppress "shell:" prefix for shell messages

The shell will have its own custom message handler which will print more
information that will help us understand where the message come from.
Close client after stopping the process

First try to stop the process.
Update due to changes in the wayland-cursor API

With the new wayland-cursor API there's no longer a 1:1 connection
between surfaces and windows. Before creating WaylandSurfaceItems from
surfaces we need to make sure that the surface is a window surface (by
checking for a wl_surface_shell).

This is the same change made by nezticle for the desktop compositor, see
6dae218a0fd02643dff8f612809d7800dce9043d.
Don't need display manager socket anymore

Passing the display manager socket is not needed anymore, we just listen
to protocol events.
Log banner and OS information with our custom message handler

Move logs after the application is created so that it uses our custom
message handler and improve log formatting.
Wrap extensions list when exceeding 78 characters

This improves log output readability a lot.
Handle system clients

Handle when system clients are added or a switch request is received.

Issue: #19