Update Scintilla to version 3.2.1

Closes #3540469
Update for new Scintilla styles
Add NULL guard for reloading "untitled" documents

Previously it was using a GLIB assertion which shouldn't be used
to detect a normal condition and so it caused a warning on the
console output when clicking "Reload" with an "untitled" document.
indent switch, add braces
Fix installing data files with MSYS (Windows makefiles)
Update manual for search pref changes; add some links
Only set Find in Files directory once per-document

Use the current document's directory unless the directory field has
already been edited and the current document has not changed.
Otherwise, prepend the current document's directory to the drop-down
history in case it is wanted.

This is useful to avoid losing the edited directory when it is less
likely the user wants to use the current document's directory.
Fix searching out of document range

If a search matched the very last character of the document, next
search attempt started out of the document bounds.  This even lead
to an infinite loop due to an improper sanity check.

By the way, this fixes matching of contiguous results, as the next
search used to improperly skip one character after the result.
Although this looks like a huge issue, it was actually visible almost
only on the match count since the whole matching line was printed.
Fix search and replacement of empty matches

Regular expressions might match empty ranges, which weren't handled
properly, but generally simply omitted.

For example, the regular expression "^$" (empty line) never matched
because we assumed empty results were not interesting, and actually
needed more care in the code.  Alike, an expression matching only on
its lookahead part, like "a?(?=b)" against "b", would stop further
search, although it could even match a non-empty range if "ab" is
present later in the input.  This last kind of expressions also lead
to double-replacement because they first matched "ab" and then "b"
alone when re-matching after the "a" replacement.

This commit fixes:
 * searching when the matched range is empty;
 * step-by-step search when matching an empty range;
 * double replacement when the pattern re-matches an empty range
   straight after a replacement;
 * replacement to and empty string when the matching an empty range.

A know issue though is the step-by-step replacement that won't replace
an empty match but rather find the next match.
Document sci_get_lexer()

This function is part of the plugin API but missed its documentation,
leading to it not appearing in the generated API documentation.
Fix a reference to a file in HACKING
Fix search and replacement of empty matches (again)

f4eb89cd7d79738a9c6c45e29abdd9d15d22e4fd was partially wrong and
removed legitimate re-matches when two different matches ends at the
same position.  Particularly, the replacement changes are reverted.

Interestingly, Perl and Python does not agree on how to do such
replacements.  Python does what I did in the above-cited commit, e.g.
doesn't replace twice if the match end overlaps, but Perl does.
Perl looks more legitimate here since both Python and Perl does find
the overlapping matches when performing a search, so Python is the odd
guy here doing it differently on replace than it does upon search.

For example, replacing using the pattern "a?(?=b)" and the replacement
string "_":

	Python: ababcdb -> _b_bcd_b
	Perl:   ababcdb -> __b__bcd_b

But finding using the same pattern on the same input gives the same
results on both:

	Python: ababcdb -> ['a', '', 'a', '', '']
	Perl:   ababcdb -> ['a', '', 'a', '', '']

Anyway, GLib and us claim to support "Perl-compatible regular
expressions", so we gotta follow Perl, especially in such doubtful
situations.
printing: Avoid an useless allocation
Rewrite GTK printing using Scintilla

We used to draw the pages to print ourselves, but it is a tedious and
error-prone task (and we did made mistakes) that Scintilla would do
better by itself.  So, rewrite the GTK (e.g. non-external) print code
to use Scintilla's built-in capabilities of drawing the buffer's
content on the pages.

Not only this makes the code a lot simpler and shorter, but it gives a
more accurate render (proper handling of tab stops, wrapping on word
boundaries, no missing character when a wrapped line spans on multiple
pages, ...), and it is noticeably faster (around 3 times).

Additionally we now paginate properly, which fixes printing starting
after page 1 or printing non-contiguous pages (we used to always print
starting from page 1 and counting, no matter what pages were selected).

However, note that obviously the render is not the same, even though
it's quite similar.
Merge branch 'scintilla-update'
Fix Haskell parsing when a comment is the first thing inside a type

Closes #3552129.
Remove and unused structure member

Based on CTags r769: https://ctags.svn.sourceforge.net/svnroot/ctags@769
Mark a few things as static

Based on CTags r779: https://ctags.svn.sourceforge.net/svnroot/ctags@779
Fix invalid use of strcpy() on overlapping memory

strcpy()'s behavior on overlapping memory is undefined, so replace such
uses with memmove().

Based on CTags r783: https://ctags.svn.sourceforge.net/svnroot/ctags@783
Minor tweak to D "!" template parameter list parsing code

Note:
Indentation left as is so that the diff is readable, next commit contains
the indentation fix.