[QA] Shift Gtk dependent utility functions into separate file.
Add toolbar code from Geany 1.24.1

http://www.geany.org/

Use the toolbar code as a basis for adding a customizable toolbar in Viking.
Add glib utility functions from Geany 1.24.1

Primarily for use with toolbar code, but of course may be used elsewhere.
Add Gtk+ utility functions from Geany 1.24.1

Primarily for use with toolbar code, but of course may be used elsewhere.
Add capability to use a button callback within UI builder.

This pointer value is obviously not saved/loaded from the user's preferences file.

Thus from the preferences dialog one can have button to link to extended configuration.
Give all action entries with an icon a tooltip.
[QA] Use VIK_VIEWPORT_DRAWMODE values in GtkRadioActionEntry mode_entries[]
Extend toolbar code for usage with Viking.

Features:
. Handling multiple toolbars (one for each window)
. Not just simple actions but also toggle actions and groups of radio actions
. Preferences integrated with Viking's preferences mechanism.
 - Toolbar icon size, icon style and toolbar location (below or beside the main menu).
. UI definition for Viking's default toolbar
Integrate toolbar code to be used with Viking windows.

Add modal toolbar callbacks and adjust menu callbacks
 to ensure consistent states between the menus and toolbar buttons.
Merge commit 'ToolbarConfig'
Fix broken generated toolbar UI file definition.

Fix commit SHA:75b7457a731454be45376991de948efbbbc081ea.
I must have accidentally removed the end comment markup when rewriting the comment.
Fix up toolbar/menu toggle button alignment when loading from Viking files.
Add capability to save layer defaults from outside the layer defaults code.
Enable Map Cache layout control per map.

The default for new users is the standard OSM layout that should be compatible with other tools.

For existing users the legacy method is kept as the default.

Users can change the default used via the layer defaults configuration or on a map by map basis in their .vik files.

A python script tool (run manually) is provided to assist migrating cache from one format to another (see later commits).
Default map caches for new users to use the OSM layout scheme.
Add map name property which is used in the directory path of the cache storage.

If map name is not specified then fallback to the label name.
[QA] Rename mode to id.
Enable importing from an mbtiles file to Viking cache via the python tool.
Rename viking cache tool in preparation for more than just mbtiles usage.
Python 3 compatibility.