lsp: Adjust completion range to replace based on server data
Some server send over completion's for a range whose start is before the position we requested completion for e.g.,
import package:mypackage/[Cursor]
The server might send in a completion "package:mypackage..." for a range that starts right after "import". With our current implementation we end up having something like:
import package:mypackage/package:mypackage/somefile[Cursor]
If the server sent a CompletionItem.textEdit.range and that range's start is different than what we have, perfer the server. This leads to better completion because the server might be supplying items for a bigger range than just the current word under cursor.
Tested with 2 servers dart and clangd and haven't noticed any odd behaviour in the last 2 days.