hasKeyword and containsKeyword are the same, but one crashes on null

(cherry picked from commit 13d680dec6eb574459be2d32cab017db7f2b94ca)
Improve applyErrata algorithm to apply only relevant erratas. Testcase included.

applyErrata applies all erratas to all systems, which makes SSM not very
useful.

There is already a check in the wrapper applyErrataHelper class, but only
complains. This is fine for applying erratas via the API.

Make the applyErrata smart to apply every system the right group of
erratas that are relevant to it. Optionally allow a flag that
can be used from other methods to mimic the "throw" if erratas do not
apply to all systems behavior.

ErrataTestUtils is a group of test methods used in SUSE Manager
CVE audit feature. Most of the methods are relevant to test this
errata scenarios so we are also upstreaming those methods.

(cherry picked from commit 7171400eba1f7f7bfe8b59b568a93851b6575fcc)
ErrataManager.applyErrata: raise exception even when there is no relevant errata

(cherry picked from commit b5860b51bef4615715e98072af0454406724a66d)