Implementing building two separate binaries for x11 and wayland

Build gnome-shell for x11, and gnome-shell-wayland for wayland
(as well as the associated libgnome-shell and libgnome-shell-wayland).
The first one links to libmutter, the second to libmutter-wayland.

libgnome-shell and libgnome-shell-wayland are now compiled from
libgnome-shell-base (with all sources that are independent of mutter),
libgnome-shell-menu (with the copy-pasted gtk sources), plus the
sources that use mutter API

https://bugzilla.gnome.org/show_bug.cgi?id=705497
wayland: Add a --display-server option

This makes Gnome Shell run as its own display server.
wayland: Create a dummy stage window when running as a display server

When Mutter is running as a display server then Clutter won't be using
the X11 backend so there won't be a window for the stage. The shell
global keeps track of this stage window to be used in various places.
This patch adds a dummy window that is never mapped to use instead of
the stage window so that the various places that are using it might be
able to continue working without generating X errors.
wayland: Don't set properties on the overlay window on Wayland

When Mutter is running as a display server it won't create an overlay
window. Therefore we shouldn't need to set the DND proxy on the
window. This was previously causing X errors when it tried to set a
property on an invalid window.
Don't pass on X events to Clutter

The Mutter plugin manager has now been changed so that it itself will
pass on the events through Clutter so there is no need to do this in
Gnome Shell anymore.
Don't ignore crossing event

We were sometimes ignoring crossing events to avoid unfocusing
the tray after the user interacted with a legacy icon.
This can't happen any more, as the tray is modal and all events
are synthetized, so remove this code, which crashes the shell
under wayland.
ShellGlobal: avoid one use of ClutterX11

clutter_x11_get_stage_window() will abort if clutter is not
using the x11 backend (such as when running under DRM). We already
have a fake X window in ShellGlobal, let's use that instead.
StEntry: don't call ClutterX11 methods if Clutter is not using x11

It causes an assert and crashes.
ShellGlobal: don't use Gdk to query the pointer position under wayland

Gdk uses Xwayland, so it only sees the events we forward to X11
clients. Instead, under wayland we can use clutter and be sure
that the value it provides reflect the actual pointer position.
Layout: don't hide the top window group from pick on wayland

We need to pick the override redirect windows, or they won't receive
events.
"Fix" X11 timestamp brokenness

When running as a wayland compositor, X11 times and clutter times
cannot be compared, so make sure we only use X11 times from
MetaDisplay, until all mutter code is converted to use the
monotonic clock (ditching both clutter times and X11 times)
Add support for running wayland under gnome-session

Include a .desktop file that autostarts us as a wayland compositor.