vim: Cleanup word matching code

**Don't merge it yet!** It requires review from people that actually know the Vim syntax :)
OK, so this is simply a special name and not a syntax construct, right?

Anyway a problem here is that it will prevent handling of anything that starts with (caseless) `end`, like `endsomething`.  IMO, this should rather check if the `name` it extracted was `end` (or `END`, or simply caseless check if this can be `EnD` or the likes), or if really we don't want to fill the `name` in this case, use `(! wordMatchLen(cp, "end", 3) && !wordMatchLen(cp, "END", 3))`.

Anyway, I'd write something like this (untested):
```C
if (*cp)
{
    const unsigned char *end = skipWord (cp);

    if (end > cp && /* avoid creating an empty tag if there was actually no word */
        strncmp (cp, "end", end - cp) != 0 &&
        strncmp (cp, "END", end - cp) != 0)
    {
        vStringNCatS (name, cp, end - cp);
        vStringTerminate (name);
        makeSimpleTag (name, VimKinds, K_AUGROUP);
        vStringClear (name);
    }
}