Enable the support for selecting preferred video codecs (software based vs hardware based)

This patch allows us to exclusively use software video codec for metadata retriever to avoid cases where
the metadata retriever contents hw accelerated video codecs with some foreground video playback

Currently, if the hw accelerated video codec is taken by the metadata retriever, then the
foreground video playback process has to use software-based video codec for playback. End users won't
have a very good experience using software-based video codec for playing high resolution videos
in the foreground, if not always impossible.

The change touches many files in OpenCore, but the actual change in each file is just a line or two.
Thanks for comments from the reviewers. I was able to greatly reduce the number of files that are changed.
We should have used the configuration files to advertise whether an omx core is hardware-based or
software-based. Currently, this patch recognizes the software codecs by checking the component
name. If the component name contains "PV", then it is a software-based codec. This is a hack.

In addition, it would be nice to have more options for selecting a codec. For instance:
option a. hardware only; b. hardware preferred; c. software only and d. software preferred.
but that adds more complexity.

Removed a new method based on reviewer's comment.
21 files changed