Add a --full-match option to better handle mixed Debian/Ubuntu systems
On mixed Debian/Ubuntu systems (where apt_preferences are used to default to either Debian or Ubuntu packages, but packages from the other source can be manually selected when needed), it is possible for different packages with the same package name/version to be available from different sources simultaneously. For example, pigz version 2.8-1 is currently available from both Ubuntu 24.04 and Debian 13.1
That confuses apt-show-versions, since it currently only matches installed and available packages by name and version. For example, on a system with all Ubuntu packages installed but Debian sources configured, apt-show-versions incorrectly lists many of the installed packages with the Debian release name instead of the Ubuntu release name.
That confusion can be avoided by comparing additional metadata fields between installed and available packages, particularly the Maintainer and Installed-Size fields which are generally different between Debian and Ubuntu packages. For good measure, it is probably worth comparing all of the available fields (with the exception of Section and Priority, as those often don't match between installed and available packages).
Unfortunately, this requires loading additional metadata fields from the package lists, and adding additional fields to the cache would bloat the cache and likely eliminate most of the benefits of the cache. Since mixed Debian/Ubuntu systems are likely a rare use case, it probably makes sense to keep the current cache as-is for common use cases, implement this alternative behavior as a non-default option, and simply skip using the cache for this use case.
This merge request implements that behavior - adding a --full-match option which ignores the cache, loads the full package metadata, then compares full metadata between the installed and available package lists in order to reliably detect the origin of each installed package.
While I was touching things, I cleaned up a few minor unrelated issues in separate commits.