Prevent criticals when initializing a Wayland display

When we call _gdk_wayland_display_load_cursor_theme during
the initial opening of the first display, gdk_setting_get does
not work yet, since it relies on the default display/screen
being set, which only happens after open returns.
Instead, just use the screen of this display.
Add some more GtkWindow tests

These tests check that a toplevel window ends up with the expected
size after setting default sizes or resizing. It currently passes
on X, but fails with client-side decorations under X and Wayland.
Some window size test tweaks

Draw a checkerboard pattern, and add an interactive mode that
waits for events before moving on. This makes it easier to see
when a size is wrong.
window: handle titlebar property for the buildable interface
Always use gint for border_width

This avoids an evil trap when doing MAX (..., ... - 2 * border_width)
and the expression on the right gets promoted to unsigned, instead
of going negative as you would expect.
https://bugzilla.gnome.org/show_bug.cgi?id=699633
Updated Tajik Translation
Remove an unused private function

_gtk_text_layout_get_line_xrange was not exported and not used
inside GTK+ either.
gtk-demo: Don't include config.h needlessly

It is not needed here.
gtk-demo: Include config.h first

If config.h is included after gdkversionmacros.h, _GDK_EXTERN
gets redefined and cpp doesn't like that.
gdkversionmacros.h: add GDK_AVAILABLE_IN_ALL

Add a macro to declare that a particular symbol is available in all
versions of GTK+.

All newly-added symbols should have proper version macros (like
GDK_AVAILABLE_IN_3_4).
Use GDK_AVAILABLE_IN_ALL for generated enum types

glib-mkenums is not currently clever enough to know which version an
enum type was added in, so just mark all the _get_type() functions as
available in all versions.
Add GDK_AVAILABLE_IN_ALL annotations in gdk

This is in preparation to modernizing our handing
of exported symbols.
Use _GDK_EXTERN when defining the decorators

Make all GDK_DEPRECATED and GDK_AVAILABLE macros use a
new _GDK_EXTERN macro. _GDK_EXTERN defaults to just 'extern'
but a subsequent commit will add visibility handling to it
while building GTK+.
Just ignore deprecations inside deprecated/

Not worth tracking uses of deprecated API individually here.
gtk: Use GDK_AVAILABLE_IN_ALL for generated enum types

glib-mkenums is not currently clever enough to know which version an
enum type was added in, so just mark all the _get_type() functions as
available in all versions.
Add annotations to gtk headers

Add annotations to all exported functions in GTK+ headers.
Add annotations in a11y headers
Fix up headerless symbols

Some symbols are exported from GTK+, but do not appear in any
headers. For these, use _GDK_EXTERN in the source file to make
sure they are exported.
Ignore deprecations where needed

There are a few places where we are still using deprecated
API internally - ignore deprecations around these uses.
New visibility handling in gdk

Change the visibility handling to be the same way we do it in
GLib now. We pass -fvisibility=hidden to gcc and decorate public
functions with __attribute__((visibility("default"))).

This commit just does this for GDK, GTK+ will follow later.