Fix detection of keywords when followed by a semicolon

Closes #2130612.
Fix JavaScript ident/keyword highlighting in HTML filetype
Improve CSS highlighting
Add more CSS3 keywords
Allow to switch message window orientation to place it on the right
Use "scala" extension for Scala

Closes #3574723.
Consider dash (-) when looking for the word to complete for CSS
Make wordchars have precedence over whitespacechars

This makes the "wordchars" setting from filetypes.common and each
specific filetype override filetype.common's "whitespace_chars"
setting, rather than it overriding filetype-specific "wordchars".

This makes the it easy to chose filetype-specific "wordchars", where
before user had not only to update this setting, but also the
filetype.common "whitespace_chars" setting if it listed one or more of
the new characters for the change to actually have an effect -- and
changing "whitespace_chars" for every filetype.

Closes #3429368.
Move custom styles to a resource file
Add configure flag --enable-gtk3 to build against GTK 3.x
Don't access GtkWidget fields directly

Since many accessor are new in GTK versions we don't depend on, add
a header that defines them to the direct access if they aren't
available.
Include keysyms compatibility header on GTK3
Guard removed dialog separators on GTK3

GtkDialog separators sere deprecated on GTK 2.22 and remove on 3.0,
so define them to dummy values on GTK3.

We don't get rid of them altogether because GTK 2.16 we depend on
probably has separators enabled by default and we want to remove them.
Get rid of GtkComboBoxEntry API and use GtkComboBoxText API

Use the GtkComboBoxText API and the GtkComboBoxEntry replacement API
and map those to the old equivalents if not available.

This changes the type exposed by ui_combo_box_add_to_history() from
GtkComboBoxEntry to either GtkComboBox (under GTK2) or GtkComboBoxText
(under GTK3).  This should not be too much of an issue since
GtkComboBoxEntry and GtkComboBoxtext are subclasses of GtkComboBox,
but this will still emit warnings when when the calling code passes
a GtkComboBoxEntry pointer to ui_combo_box_add_to_history().

However, this requires the calling code to use the same mapping as we
do (GtkComboBoxText = GtkComboBox on GTK2, even on 2.24), or things
will blow and it'll be hard to understand why.  This wouldn't be an
issue if the calling code includes our gtkcompat.h header everywhere
it deals with combo boxes, which will be the case if it includes the
Geany headers everywhere but probably won't otherwise.  Oh dear.

A possible kind of workaround may be for ui_combo_box_add_to_history()
to do type-checking on its argument and use the actually correct API
for that type.
Prevent most GTK3 deprecation warnings that can't be fixed on GTK2

Map the various horizontal and vertical deprecated constructors
to their GtkOrientation-based equivalents on GTK3 to prevent most
deprecation warnings.
Map GeanyWrapLabel to GtkLabel on GTK3

The GTK3 version of GtkLabel provides what GeanyWrapLabel is for given
the appropriate settings are set, so no need to our own widget -- that
would require being updated to support GTK3 anyway.
Add ::draw handler for GTK3 where we have ::expose-event handlers
Make X11 backend specific code GTK3-proof
Load GTK3 version of the VTE library when built against GTK3
Prevent plugins built against GTK2 Geany from loading in GTK3 Geany