Clean up HalGroup::forEachInstance usage

Add a few functions to MatrixInstance to print
out human-readable strings so that analyze_matrix / vintf
can use them.

Bug: 140832836
Test: libvintf_test
Test: analyze_matrix --interfaces \
    --input hardware/interfaces/compatibility_matrices/compatibility_matrix.current.xml
Test: adb shell vintf

Change-Id: Ice13f299ba24808119f5536ecacc2777cfa870a2
diff --git a/main.cpp b/main.cpp
index baac511..95bc042 100644
--- a/main.cpp
+++ b/main.cpp
@@ -189,8 +189,7 @@
 void insert(const HalManifest* manifest, Table* table, const RowMutator& mutate) {
     if (manifest == nullptr) return;
     manifest->forEachInstance([&](const auto& manifestInstance) {
-        std::string key = toFQNameString(manifestInstance.package(), manifestInstance.version(),
-                                         manifestInstance.interface(), manifestInstance.instance());
+        std::string key = manifestInstance.description();
         mutate(&(*table)[key]);
         return true;
     });
@@ -200,12 +199,11 @@
     if (matrix == nullptr) return;
     matrix->forEachInstance([&](const auto& matrixInstance) {
         for (auto minorVer = matrixInstance.versionRange().minMinor;
-             minorVer <= matrixInstance.versionRange().maxMinor; ++minorVer) {
-            std::string key = toFQNameString(
-                matrixInstance.package(), Version{matrixInstance.versionRange().majorVer, minorVer},
-                matrixInstance.interface(),
-                matrixInstance.isRegex() ? matrixInstance.regexPattern()
-                                         : matrixInstance.exactInstance());
+             minorVer >= matrixInstance.versionRange().minMinor &&
+             minorVer <= matrixInstance.versionRange().maxMinor;
+             ++minorVer) {
+            Version version{matrixInstance.versionRange().majorVer, minorVer};
+            std::string key = matrixInstance.description(version);
             auto it = table->find(key);
             if (it == table->end()) {
                 mutate(&(*table)[key]);