Completely rewritten keyword completion implementation using another approach

 #KT-2816 Fixed
Fixed KT-5809 Code completion after "?." should not include keywords

 #KT-5809 Fixed
Checked that KT-2832 has been fixed

 #KT-2832 Fixed
Checked that KT-2795 has been fixed

 #KT-2795 Fixed
Fixed tests
Keyword correction: more correct behavior + smaller file text
Keyword correction: smaller file text
Fix in keyword completion
Minor refactoring in keyword completion
Keyword completion: added missing 'out' keyword
Added a test
Keyword completion uses simple prefix matching only
Minor