Improve GTK compatibility macros for GTK 2.16

On GTK 2.16 GTK_WIDGET_[UN]SET_FLAGS resolves to a do-while construct which
raises a syntax error when embedded into a ? operator.
Also gtk_widget_get_visible() is only available since GTK 2.18, so add a fallback to
the old variant.
Add a note to update http://download.geany.org/MD5SUMS
Make the compat_widget_set_flag macro more robust
Merge "Improve GTK compatibility macros for GTK 2.16" from eht16/master
Filetypes: Add some Ruby file extensions
Windows: use absolute path to the icons directory
Adding hint for installation via sudo to documentation
Fix various line length computation issues for the last line

The last line doesn't have EOL characters, so computing
(line_length() - eol_length()) is wrong on the last line.

Instead, use (line_end_pos() - line_start_pos()) as suggests
Scintilla's documentation.

Closes PR#124
Add to description of "Newline strips trailing spaces"

Add description of interaction between this action and indentation
since it is not obvious.
Change signal used to kill executions to SIGTERM

The originally used SIGQUIT has problems:
1) see the deleted comment
2) some xterm alternatives ignore it, so they don't stop

Changed to SIGTERM which is the canonical "terminate" signal.

Removed associated unneeded ignore of SIGQUIT.
Fix swapped tooltips between "run in VTE"/"skip run script"
Fix search/replace for the replacement not to change search results

Fix the search & replace algorithm to make sure a replacement won't
possibly affect the next one (e.g. in case of lookahead and lookbehind
regular expressions).

To do so, first find all occurrences and only then perform replacements,
instead of doing both together.

This fixes searching/replacing of any pattern that may be affected by
its replacement (e.g. patterns that look for something not a character
in the match range), including:

 * Start/end of line:
   Before this change, searching with regular expression "^A" and
   replacing with an empty string on the input "AA" would have resulted
   in an empty output ("^A" matching again after removing the first
   one).  Now it properly only removes the leading "A".
 * Lookahead/lookbehind:
   Pattern "(?<=a)b" with empty replacement and input "abb" would have
   resulted in the output "a" instead of "ab".
 * And more generally, many patterns matching non-characters like
   positions or out-of-match characters.
Unify algorithm for searching all matches inside a range

Instead of re-implementing the search-all algorithm everywhere it is
needed, move it to a re-usable function.  This is useful because some
care is required to avoid improper rematches and endless loop, so
avoiding duplication is important (especially if something has to be
fixed someday).
Fix cursor position and selection after comment toggling

Fix the selection start position after uncommenting if it was inside
the comment marker;  and fix the selection end position if it was in
the indentation or before or inside the comment marker.

Improved fix for #3576431.
Use GSlice to allocate find_range() elements
Note: Find Usage can be used from the symbol list popup menu
Add symbol list Find in Files popup menu item
Use widget parameter in on_find_usage() for consistency
Add support for loading Vi and CTags tag files

This allows to load tag files in the CTags format, which is compatible
with Vi format.

References:
 * http://ctags.sourceforge.net/FORMAT
 * http://ctags.sourceforge.net/ctags.html#TAG%20FILE%20FORMAT
Update of Lithuanian translation