Change socket owner and group

Keep the socket open with user access but change owner and group to
sddm to avoid permission denied errors from the greeter.

This is not done in test mode as everything runs with one user.
Merge pull request #214 from plfiorini/socket-permission

Change socket owner and group
Move X11 specific code from Display to DisplayServer

A step forward for a display server agnostic sddm.
With Wayland support coming soon we want display server specific code
not scattered all over the place.
Configuration returns "." as stateDir in test mode

Move this logic to Configuration to automatically get the
appropriate value.
Introduce runtime directory and use it for Xauthority

Runtime directory is meant for temporary files so use it to store the
Xauthority file.  We leave state directory regardless because it might
be useful in the future.

It's not configurable by the user to avoid messing around with delicate
configuration options and gives us a predictable location.

However in test mode we usually run as an unprivileged user who doesn't
have access to system-wide directories so we try to find a suitable path.

First we look for the current user runtime directory, if it's not
available we try with the temporary directory.
Log display server command line

For debugging purpose.
Turn DisplayServer into an abstract class

Move Xorg specific code to XorgDisplayServer, this will allow us to
support multiple display server.
Add an utility function to change owner to the sddm user
Wayland port

This change adds Wayland support only to Qt 5 builds (it's not possible
with Qt 4).

Users pass -DUSE_WAYLAND=ON to cmake in order to enable Wayland support.
Wayland and X11 support are mutually exclusive at this point.

systemd >= 209 is required because it manages devices for us.

Changes to daemon:

 - New WaylandDisplayServer class with Wayland specific code

Changes to greeter:

 - KeyboardBackend moved to its separate .cpp/.h files
 - Same happened to XcbKeyboardBackend
 - KeyboardModelPrivate moved to a separate header
 - Layout moved to separate .cpp/.h files as KeyboardLayout
 - New WaylandKeyboardBackend class with Wayland specific code
 - Added WaylandIntegration class to use wl_fullscreen_shell

Wayland backends are used only if USE_WAYLAND is defined, otherwise their
X counterpart is built and used.

The following sddm.conf entries are ignored with Wayland support:

 - ServerPath
 - SessionCommand
 - DisplayCommand

The sddm.conf configuration file has different values if Wayland support
is enabled for:

 - SessionsDir

With Wayland we have compositors that take roles the role of display server,
window manager and compositor in the X11 world.

There are several Wayland compositors, each with different command line
arguments.  For this reason the only compositor supported at this moment
is Weston with fullscreen shell, a plugin that is available since the 1.5
release.

Weston's fullscreen shell requires a window to be presented on each
output, size mismatch between window and output sizes is resolved
stretching the window to accomodate output size (other options are
available, though).
sddm currently creates only one giant window for all the screens,
to avoid stretching this window I decided to make it as big as
the primary output resulting in other outputs showing a black
screen.

In the future we might implement sddm's own compositor, but for an
initial Wayland support it's better use Weston.
A sddm compositor might be able to show sddm giant window without
problems.