Specify strstr tightly, add strglob/strglobin.

By convention, strstr should be a literal string match. Previously, it
would match as a glob pattern. Some code used that, so add new
functions strglob and strglobin to do what that code expects, and
specify them tightly too. strglob tests whether the glob pattern
matches the entire string (the name strglob is also used in the yorick
language, and that's what it does there), while strglobin tests whether
the glob pattern matches anywhere in the string.

Also tightens str_starts, str_ends, and str_replace to deal with
literal strings only. In a quick grep I did not find code that depended
on these functions matching globs.

Changes the call sites where strstr was used with glob patterns to use
strglobin or strglob as the intention seemed to be (or, in one case,
strstr with the * removed as it did not affect the result anyway).
Correct strstr/strglobin in test suite.

Previous commit included versions of strstr/strglobin in the test
suite files that did not match those in dracut-lib.sh.
i18n/parse-i18n.sh: fixed typo s/$key/$_key

Thanks xtraeme!
dracut-lib.sh: fixed return value of pidof()

pidof always returned with 0, so any "while pidof" loop would not
terminate.

Thanks "Consus" for the hint!