Back-port gdk_keymap_map_virtual_modifiers and gdk_keymap_add_virtual_modifiers to Gtk 2.18

So that it now builds Enterprise Linux 6 which only has GTK+ 2.18.

It exposes internal details of a couple private GDK data structures,
woefully ignoring best practices and information hiding principles.

It appears to work properly on my CentOS 6 installation though.