CompletionWords buffer: work with strings for scanning the words

Instead of working with GtkTextIters. It normally improves the
performances.

And there was maybe a bug with the previous code (warning messages).
CompletionWords buffer: use GtkTextRegion

For scanning the words (for the initial scan but also on text insertion
and text deletion), there is now a "scan region", a GtkTextRegion. It
simplifies the code for maintaining the GtkTextMarks.

For modifications on the buffer, there is now a callback before the
modification, to invalidate the region (remove the words that must be
removed), and a callback after the modification, to add the region to the
scan region. There were some problems when adding the region to the scan
region before the modification (text insertion or deletion).