Turn MateRRScreen into a GObject

Rework MateRRScreen so that it is a full GObject, and all its data is moved to MateScreenPrivate.
GObject's are more supported when it comes to introspection and bindings, in particular wrt constructors.
Therefore, this is a necessary step for useful introspection generation.
https://bugzilla.gnome.org/show_bug.cgi?id=630913

Based on gnome commit 4d2a27d55bcf9bb8de170ae6c6540724125aafa3
url: https://git.gnome.org/browse/gnome-desktop/commit/?id=4d2a27d55bcf9bb8de170ae6c6540724125aafa3
Add support for GObjectIntrospection

Turned all GnomeRR structures into boxed types, then added the needed annotations and the Makefile.am bits.
Does not yet include API changes, but should bind (awfully) all of libgnome-desktop.

Based on gnome commit: cad94246fb5be76482212407a380cd75f9e7b932
url: https://git.gnome.org/browse/gnome-desktop/commit/?id=cad94246fb5be76482212407a380cd75f9e7b932
rr: add api for ensuring a primary display is set in config

Based on gnome-desktop commit: f632805c549053a548877785e3e624b1fe687f23
From: William Jon McCann <jmccann@redhat.com>
rr: unset primary on displays that are off

Based on gnome-desktop commit: 4dd5a30269d71bbe1da884a849db2290df5544c9
From: William Jon McCann <jmccann@redhat.com>
Turn GnomeRRConfig and GnomeOutputInfo into GObjects

Based on gnome-desktop commits:
1d1f8ef64f404eccb29d384a75939701327e8e77
2c7a2e90fee98ff61e530098bc962a65dec670bc
7436f759bec00d87f597ef0b6945da8fa8969e85

From: Giovanni Campagna <gcampagna@src.gnome.org>
Gnome Bug: https://bugzilla.gnome.org/show_bug.cgi?id=630913
Always use gdk_window_get_window_type
Don't export private symbols in the shared library

Based on gnome-desktop commit: 81590ec66ee8507ae61b47d3d93a8685e970a629
From: Emilio Pozuelo Monfort <pochu27@gmail.com>
Turn the RANDR version checks into macros

This makes them less error-prone to use.  Also, fixes the
master check for RANDR 1.2 in gnome_rr_screen_initable_init(), which
wouldn't handle RANDR versions above 1.x.

Based on gnome-desktop commit: 4da0756ef2e42b8040d8043029057b08e85efcec
From: Federico Mena Quintero <federico@gnome.org>
Make the signal be MateRRScreen::changed, not screen-changed, to match the vmethod name

Based on gnome-desktop commit: cce5c87297ff8c163d4a29e1fc4e7277cbb4705a
From: Federico Mena Quintero <federico@gnome.org>
Disallow null filenames passed to mate_rr_config_load_filename()

Based on gnome-desktop commit: 7c2e51427fff29f1582eb5ed035f8c7637ea908f
From: Federico Mena Quintero <federico@gnome.org>
MateRROutputInfo: rename boolean accessors

Rename get_connected() to is_connected() and get_active() to
is_active(), following the normal convention.

Based on gnome-desktop commit: 46d48ab6ec256498d0dd0a5c97c0388381971cbf
From: Giovanni Campagna <gcampagna@src.gnome.org>
Fix two problems that causes m-s-d to crash at start

We need to ref outputs when we are copying them in the parser,
and we need to avoid confusing i and j, even if they both have
dots.

Based on gnome-desktop commit: 11880c8bfd7b3f1edde58b8e83e46ebd59a44311
From: Matthias Clasen <mclasen@redhat.com>
Fix refcount issues for ->config

If the GnomeRRLabeler object is going to be unref'ing the config
object, then it better keeps its own reference to it, otherwise
it could cause problems when destroyed and re-created.

Based on gnome-desktop commit: 8ceca629c2db2c8da0c7d8e391a68367c6c705d9
From: Bastien Nocera <hadess@hadess.net>
Properly get the workarea for positioning the labels

Based on gnome-desktop commit: b4b3fbe614c245e5e2cc4ca431d0f5310eca6ed1
From: Matthias Clasen <mclasen@redhat.com>
Gnome bug: https://bugzilla.gnome.org/show_bug.cgi?id=641996
introspection: Fix c-includes to actually include headers

Based on gnome-commit: 446e8ffcf16ccf909f45b293532f50996b0dd728
From: Benjamin Otte <otte@redhat.com>
Don't build some RANDR code if RANDR is not available

Based on gnome-desktop commit: f89d8a582abbb79898a93d26a8c0f52f74b20bd2
From: Federico Mena Quintero <federico@gnome.org>
Gnome bug: https://bugzilla.gnome.org/show_bug.cgi?id=643940
Fix warning and remove unused variable
Include Xlib.h so we can build when RANDR is not available

The RANDR headers include the Xlib paraphernalia, but we don't include those
headers when gnome-desktop is configured to not use RANDR.  So, instead we
include Xlib.h so that we'll have defined types for Display, Screen, etc.

Based on gnome-desktop commit: 27fb2967f620cbc82da57b9b5eea7700218b6620
From: Federico Mena Quintero <federico@gnome.org>
Avoid a possible crash

When the spice client goes to fullscreen it (temporarily) turns all xrandr
outputs off (for some reason). This causes gnome-settings-daemon to crash (and
respawn and reset the old screen size) due to a NULL deref in libgnome-desktop.

Based on gnome-desktop commit: b8849c08adb1ba1b55d1a3511dd9eefd00504dc0
Patch by: Alex Larsson
Gnome bug: https://bugzilla.gnome.org/show_bug.cgi?id=646714
Don't fall over if RANDR is missing

When RANDR is not present, the screen object never gets an info,
and since screen_info_free asserts, we must not call it unconditionally
in finalize.

Based on gnome-desktop commit: aa93854f2ba6b0f72f1bdff9699b5724a72c89c9
From: Matthias Clasen <mclasen@redhat.com>
Gnome bug: tps://bugzilla.gnome.org/show_bug.cgi?id=649053