Correct completion overwrite behavior when nothing is overwritten

This fixes the problem only partially because it is based on a
heuristic, but it should fix the most important cases.

The logic is overall very complex, nevertheless no tests are provided
because there exists no test suite that can test the contents of a
document after a completion happened and writing such a test suite is
not trivial.

Fixes #1001791
squash commit
Merge pull request #593 from sschaef/t1001791-correct-completion-overwrite

Correct completion overwrite behavior when nothing is overwritten