Update Scintilla to version 3.2.1

Closes #3540469
Update for new Scintilla styles
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.
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.
Dedent switch block from last commit, pure noise