tests: add a test for gtk_menu_shell_bind()

Borrow the RandomMenu code from the GLib testsuite and hook it up to
gtk_menu_shell_bind().

https://bugzilla.gnome.org/show_bug.cgi?id=696468
Introduce GtkMenuTracker

GtkMenuTracker folds a nested structure of sections in a GMenuModel into
a single linear menu, which it expresses to its user by means of 'insert
item at position' and 'remove item at position' callbacks.

The logic for where to insert separators and how to handle action
namespaces is contained within the tracker, removing the need to have
this logic duplicated in the 3 or 4 places that consume GMenuModel.

In comparison with the previous code, the tracker no longer completely
destroys and rebuilds menus every time a single change occurs.  As a
result, the new gtkmenu testcase now runs in approximately 3 seconds
instead of ~60 before.

https://bugzilla.gnome.org/show_bug.cgi?id=696468
tests: improve gtkmenu testcase

Don't just create a menushell and populate it with random data -- verify that
the resulting menu layout is actually correct.

This is introduced in a separate commit because the old code was failing this
part of the test.

https://bugzilla.gnome.org/show_bug.cgi?id=696468
Mention display:screen change in release notes
gdkdisplay: Remove get_screen() and get_n_screens() vfuncs
testsensitive: Remove deprecated part
widget: Get rid of deprecation warnings
celrendererspinner: Don't use deprecated API
broadway: Don't use deprecated API
broadway: Mark deprecated function call

... to avoid gcc warning us. Ideally, we'd not call a deprecated
function here, but I'm lazy.
window: Remove call to gtk_widget_reset_rc_styles()

First of all, that call is deprecated. Second, we don't have RC styles
anymore. Third, what that function does today is invalidate style
contexts, but that happens automatically when setting the screen on the
style context later.

So this function is completely unnecessary.
style: Add missing deprecation markers

Some functions in gtkstyle.h were overlooked when we added the
GDK_DEPRECATED macros.

Also add IGNORE_DEPRECATIONS to the few remaining callers of those
functions.
gdkdisplay: Warn if asked for a non-zero screen not a zero screen

Following on from a6b29d73 this commit correctly warn if you try and use
deprecated multiple screen behaviour.
Updated Polish translation
window: reset timeout source id before setting property

gtk_window_set_mnemonics_visible() will try to g_source_remove() it
otherwise, which seems harmless, but conceptually wrong.

https://bugzilla.gnome.org/show_bug.cgi?id=697144
window: rename functions dealing with mnemonic delayed display

Don't mention "auto mnemonics", since those methods are purely about
scheduling a delayed display, and that makes understanding the code a
bit harder.

https://bugzilla.gnome.org/show_bug.cgi?id=697144
window: refactor a function

Instead of having maybe_set_mnemonics_visible(), separate the checks
from the actual scheduling of mnemonics display.

https://bugzilla.gnome.org/show_bug.cgi?id=697144
window: don't schedule a display of mnemonics if window has no modifier

When the window has no mnemonics modifier set, as in the case of a
GtkMenu, never schedule a display of mnemonics on focus-in.

Previously, for those windows, the GdkModifierType mask fetched from the
device would typically have been zero, leading to the

mnemonic_modifier == (mask & gtk_accelerator_get_default_mod_mask ())

check to succeed, so we would always trigger a display for popup menus.

https://bugzilla.gnome.org/show_bug.cgi?id=697144
broadway: destroy old surface before creating new one

We were not using the old one anyway, and this may in some cases
use less memory (although in most cases the server has a ref to the
surface anyway).
Broadway: Fix shm names

We were sometimes getting zero chars in the name, making them
shorter, due to an off-by-zero in the size.