Better checks for changes on set -= for strings

Just return modification flag from str_remove().

CID 1063019: Dereference before null check (REVERSE_INULL)
check_after_deref: Null-checking "opt->val.str_val" suggests that
it may be null, but it has already been dereferenced on all paths
leading to the check.
Don't pass freed pointer anywhere

Postpone freeing it until done with all comparisons.

CID 1062980: Use after free (USE_AFTER_FREE)
pass_freed_arg: Passing freed pointer "old" as an argument to
function "update_entry(char const **, char const *, char const *)".
Remove needless check for NULL value

CID 1063018: Dereference before null check (REVERSE_INULL)
check_after_deref: Null-checking "m->items" suggests that it may
be null, but it has already been dereferenced on all paths leading
to the check.
Remove needless check of curr_view for NULL

Also move initialization of curr_view and other_view to filelist.c.
And make if statements more readable.

CID 1063040 (#1 of 1): Dereference after null check (FORWARD_NULL)
var_deref_model: Passing null pointer "curr_view" to function
"clean_selected_files(FileView *)", which dereferences it.
Make handle replacement more obvious

Instead of using a pair of close() and dup() calls, use a single call of
dup2().

CID 1063025 (#1 of 2): Resource leak (RESOURCE_LEAK)
leaked_handle: Ignoring handle opened by "dup(out_pipe[1])" leaks
it.
Make file description replacement more obvious

Instead of using a pair of close() and dup() calls, use a single call of
dup2().

CID 1063024: Resource leak (RESOURCE_LEAK)
leaked_handle: Ignoring handle opened by "dup(error_pipe[1])" leaks it.
Fix possible DIR leak in filename_completion()

When opendir() returned valid DIR pointer, but my_chdir() failed to cd
into directory, DIR was not released.

CID 1063023: Resource leak (RESOURCE_LEAK)
leaked_storage: Variable "dir" going out of scope leaks the
storage it points to.
Rename read_possible_{possible_,}pos in info.c

No need to say "possible_" twice.
Don't truncate value returned by getc()

Also add check for EOF and a leading comment.

CID 1063054: Truncated stdio return value (CHAR_IO)
char_io: Assigning the return value of "_IO_getc(_IO_FILE *)" to
char "c" truncates its value.
Fix memory liak in get_viewer_command()

Also use format_str() instead of combination of malloc() and
sprintf().

CID 1063022: Resource leak (RESOURCE_LEAK)
leaked_storage: Variable "escaped" going out of scope leaks the
storage it points to.
Fix possible memory leak in line_part_complete()

CID 1063021: Resource leak (RESOURCE_LEAK)
leaked_storage: Variable "line_ending" going out of scope leaks the
storage it points to.
Make file description replacement more obvious

Instead of using a pair of close() and dup() calls, use a single
call of dup2().

CID 1063020: Resource leak (RESOURCE_LEAK)
leaked_handle: Ignoring handle opened by "dup(pipe[1])" leaks it.
Fix possible use of uninitialized variable

CID 1062989: Uninitialized pointer read (UNINIT)
uninit_use: Using uninitialized value "result".
Prevent using of uninitialized buffer

CID 1062986: Uninitialized scalar variable (UNINIT)
uninit_use_in_call: Using uninitialized element of array "buf" when
calling "strlen(char const *)".
Prevent using of uninitialized buffer

CID 1062985: Uninitialized scalar variable (UNINIT)
uninit_use_in_call: Using uninitialized element of array "buf" when
calling "strlen(char const *)".
Fix return w/o va_end() in log_msg()

CID 1019492: Missing varargs init or cleanup (VARARGS)
missing_va_end: va_end was not called for "ap".
Check strchr() result in execute_apropos_cb()

To prevent unlikely, but still possible crash.

CID 1063031: Dereference null return value (NULL_RETURNS)
dereference: Dereferencing a null pointer "line".
Explicitly ignore perform_operation result

Not interested in result of file removing.

CID 1063053 (#1 of 1): Unchecked return value (CHECKED_RETURN)
unchecked_value: No check of the return value of
"perform_operation(OP_REMOVESL, NULL, dst_full, NULL)".
Fix possible TOCTOU issue in vifmrc-converter

CID 1062990: Time of check time of use (TOCTOU)
Check result of opening vimfiles file

CID 1063033: Dereference null return value (NULL_RETURNS)
dereference: Dereferencing a pointer that might be null "fp" when
calling "fclose(FILE *)".