keyboard: Split accel_edit_callback

This function is getting a bit big, and the next commits will add more
code to it.

https://bugzilla.gnome.org/show_bug.cgi?id=731618
keyboard: Add 'reverse' helpers to CcKeyboardItem

In order to handle shortcuts which can be reversed (for example,
super-space and shift-super-space to switch input methods
forward/backward), we are going to add new attributes to the xml files
describing the keyboard shortcuts to show in the panel.

This commit is a first step towards that and adds the notion of
'reverse' items to CcKeyboardItem.

We will then indicate in the xml description files that
'switch-input-source' is reversed by 'switch-input-source-backward' and
that 'switch-input-source-backward' reverses 'switch-input-source'.

https://bugzilla.gnome.org/show_bug.cgi?id=731618
keyboard: Parse 'reverse' and 'is-reversed'

This commit adds support for 'reverse' and 'is-reversed' attributes when
parsing the KeyListEntry XML node.

https://bugzilla.gnome.org/show_bug.cgi?id=731618
keyboard: Suggest to automatically set reverse bindings

Since we now know when a binding has a 'reverse' binding, we can now
suggest to update the 'reverse' shortcut when the user set a shortcut
for one of them.

https://bugzilla.gnome.org/show_bug.cgi?id=731618
keyboard: Add 'reverse' metadata to switch-input-source shortcuts

Now that the keyboard panel knows how to handle reverse shortcuts, we
can start annotating the existing ones with the needed XML attributes.
This commit does that with switch-input-source{-backward}.
Note that some changes in some modules are needed for this to work
correctly.
In this case, a default value needs to be set for
switch-input-source-backward in gsettings-desktop-schemas, and the
Meta.KeyBindingFlags.REVERSED flag needs to be removed from the
shortcuts defined in gnome-shell source. Instead of having
mutter handle the reversion with 'shift' by itself, it's now handled
explicitly through gsettings keys.

https://bugzilla.gnome.org/show_bug.cgi?id=731618
region: Remove "Shift" hack from region panel

The region panel hardcodes that to switch input source backward, one
uses the shift modfier with the shortcut to switch input source forward.

https://bugzilla.gnome.org/show_bug.cgi?id=731618
keyboard: Add support for hidden keybinding XML data

If a KeyListEntry has a hidden="true" attribute, then the corresponding
binding information will be loaded as usual, but the binding won't be
displayed in the user interface.

This is useful as the keyboard panel will take into account hidden
keybindings when detecting conflicting shortcuts, or to suggest to set a
reverse shortcut.

For now, this will be used for the various reverse mutter keybindings
({switch,cycle}.*-backward) as they should not be shown in the UI, but
we still want the keyboard panel to know about them.

https://bugzilla.gnome.org/show_bug.cgi?id=731618