Improved completion

Currently, it cannot do completion in the following cases.

```haskell
import Foo.Bar (fun1
               ,fun2, fu
--                  ^^^ (1) second and later words when the line starts by comma
               (<
--             ^^ (2) operators (starts by parenthesis)
```

----

the other changes

* replaced s:last_matchend() by matchend() because calling matchend() only once is faster most often