[RFC] Fix clang analysis warnings. (4)

Continues #1389, #1431, and #1460 .

This fixes **18** warnings in:
- tag.c
- window.c
- eval.c
- screen.c
String literals are by definition immutable. Then, there would be little gain in creating a different copy for each individual appearance of the same literal. So, all instances of the same literal end up pointing to the same location in the read-only data section of your object file. This is called interning strings. And it's why pointer comparison works here.

Now, I thought this worked for every c compiler (and it does for most common ones), but as @ZyX-I has pointed out, there are some for which it doesn't.

I said this was ugly. But what I wanted was a way to distinguish the non-allocated empty string assigned at 4127 from a possible allocated empty string, for which I wouldn't want to spare the call to free().

I looked at eval.c code for a while, but I wasn't sure an allocated empty name wasn't possible for a function value. @ZyX-I Could you answer that, given your knowledge of eval.c?

If we have the guarantee an allocated empty name is not possible, then we can replace that with something less surprising:

```if (varp->vval.v_string && *varp->vval.v_string != NUL)```

BTW, Would the first non-null check be needed? can vval.v_string be null there?