IconCache: Keep a ref on the GtkIconData

The icon data in GttkIconInfo->data is currently owned by the
IconThemeDir->icon_data hashtable. However, on e.g. a theme change
blow_themes() destroys the dirs and thus the data, meaning any
outstanding GtkIconInfo points to stale data.

We solve this by adding a refcount to GtkIconData and reffing it
from GtkIconInfo.

https://bugzilla.gnome.org/show_bug.cgi?id=702598
(cherry picked from commit 280d606cd41c5d607e56d48e57bcba5b654cfa2e)
IconTheme: Clear caches when reloading theme

When we're reloading the theme in ensure_valid_themes (due to noticing
that a theme dir has changed) we need to also clear the icon cache
as it will not be valid for the new theme.

We already do this in do_theme_change(), but ensure_valid_themes()
was missing this.

https://bugzilla.gnome.org/show_bug.cgi?id=702598
(cherry picked from commit 1ee36713fe31b56df31b5ba3151c247bf4ee1f3c)
IconTheme: Move changed emission to an idle

By delaying the emission to an idle we avoid a lot of tricky
reentrancy issues. For instance, a normal gtk_icon_theme_choose_icon()
call could in very rare cases (when a user updated an icon theme) emit
a signal which could affect the icon currently being looked up.  This
kind of reentrancy is very hard to test against, especially when it is
so rare, so we're better of avoiding it.

There is no real value to get the change signal directly anyway. All
it can do is affect which icon is rendered the next frame, and we will
handle the queued emission before rendering. Not to mention that icon
theme change detection is polled anyway, so it is already delayed.

https://bugzilla.gnome.org/show_bug.cgi?id=694755
(cherry picked from commit 159cccfe7b50e1e0fbede08132abfc74f4206fdb)
quartz: update the keymap only if the input method changed

and not on each keystroke, which for some IMs apparently caused a full
update on each keystroke, not just a check for changes. Patch from
Takuro Ashie, bug #698183.

(cherry picked from commit bbe3554fa9baefc875dcc3d62cd1a4bbbaf18b53)
quartz: remove check for keymap changes from update_keymap()

The function is now only called when the keymap has actually
changed. bug #698183.
(cherry picked from commit e5e17cf3612191c0497882a6a6b3206dc0ca96cd)