Proper linear time insert completion insertion
Proper linear time insert completion insertion

The previous solution, ad9b090ddf362220e7879370538db0b5cd14fe34, was
failing when completion was not replacing any text, as going through
SelectionList was not permitting to replace empty ranges.

Handle replacement as first a deletion then an insert to get fast
update, as having a list of forward deletions and then a list
for forwad insertion is much faster to update than a list of
interleaved delete/insert.

lenormf/kakoune,jjthrash/kakoune,danr/kakoune,occivink/kakoune,casimir/kakoune,mawww/kakoune,casimir/kakoune,danr/kakoune,danr/kakoune,alexherbo2/kakoune,lenormf/kakoune,Somasis/kakoune,alexherbo2/kakoune,Somasis/kakoune,jjthrash/kakoune,jkonecny12/kakoune,mawww/kakoune,alexherbo2/kakoune,occivink/kakoune,occivink/kakoune,alexherbo2/kakoune,casimir/kakoune,Somasis/kakoune,jjthrash/kakoune,mawww/kakoune,danr/kakoune,jkonecny12/kakoune,jjthrash/kakoune,lenormf/kakoune,occivink/kakoune,mawww/kakoune,lenormf/kakoune,jkonecny12/kakoune,Somasis/kakoune,jkonecny12/kakoune,casimir/kakoune