scintilla: Auto-generate GIR information

Scintilla can be sufficiently scanned to provide gir information for plugins.

* ScintillaWidget is scanned directly by g-ir-scanner
* SCI_* and friends are scanned indirectly by generating them from Scintilla.iface
  into a temporary header (Scintilla.h cannot be used directly because the
  defines lack a namespace prefix and other noise in that file)
* sciwrappers.h can also be scanned directly, although not everything of it
  is scanned

scintilla.vapi is now mostly also auto-generated from the GIR information.

TODO: sci_find_text() is part of the plugin api but not properly g-ir-scanned yet
ScintillaWidget.h fixes for GIR
scimethods: Generate ScintillaObject methods from sciwrappers.h

These methods are the OOP counterpart of the sci_* functions. They simply have
a different name so that g-ir-scanne picks them up as instance methods.

Because they just have a different name and are otherwise identical to sci_*
they can be generated using a small script. Checked-in to git to avoid build
dependancy on python.
GeanyGI: Add Editor APIs via editor.vala
DO NOT MERGE extend valatest a bit
keybindings: Introduce keybindings_set_group_with_handler()

This function creates a keybinding group that uses a GeanyKeyGroupHandler. It's
actually a small wrapper around keybindings_set_group().
keybindings: Export keybindings_set_group_with_handler() to plugin api

Plugins can use this instead of keybindings_set_group_with_handler(). This
provides no automatic freeing when the plugin is unloaded and has to be done
manually.

This is intended mainly for the GeanyGI gobject api wrapper that does
keybindings_free_group() in its destructor, and has no reference to
the plugin instance.
keybindings: Export keybindings_free_group() to the plugin api

This is needed by the GeanyGI API wrappers to automatically free any
keygroup in the destructor without needing a reference to the plugin.
GeanyGI: Add KeyGroup and KeyBinding via keybindings.vala
GeanyGI: Add Data APIs (app, prefs, build_info, widgets) via Data.vala
GeanyGI: Add UiUtils APIs via utils.vala
valatest: Extend to include some keybindings test
plugins: Port console.py plugin from geanypy
extension.py: Append for some keybindings test.
extension.py: Extend for some uiutils test
plugins: Add key_group method to GeanyPlugin2 interface
plugins: Check GeanyPlugin2.key_group() for deciding whether the plugin has keybindings

In the new GeanyGI API plugins do not add keybindings via plugin_set_key_group()
but instead create one or more with keybindings_set_group() directly. Because
of this plugins need to indicate that they have keybindings separately.
valatest: Extend to use GeanyPlugin2.key_group()
console.py: Extend to use GeanyPlugin2.key_group()
GeanyGI: Add highlighting_* APIs via highlighting.vala