HalGroup is the base class for HalManifest and CompatibilityMatrix.

Move common functions to HalGroup.h

Test: libvintf_test
Test: vintf_object_test
Bug: 38217107
Change-Id: I8acac6f4fcf79e2c9c3ec9df475f341c772aa983
diff --git a/CompatibilityMatrix.cpp b/CompatibilityMatrix.cpp
index 379fd78..627c238 100644
--- a/CompatibilityMatrix.cpp
+++ b/CompatibilityMatrix.cpp
@@ -24,8 +24,7 @@
 constexpr Version CompatibilityMatrix::kVersion;
 
 bool CompatibilityMatrix::add(MatrixHal &&hal) {
-    mHals.emplace(hal.name, std::move(hal));
-    return true;
+    return HalGroup<MatrixHal>::add(std::move(hal));
 }
 
 bool CompatibilityMatrix::add(MatrixKernel &&kernel) {
@@ -36,18 +35,6 @@
     return true;
 }
 
-ConstMultiMapValueIterable<std::string, MatrixHal> CompatibilityMatrix::getHals() const {
-    return ConstMultiMapValueIterable<std::string, MatrixHal>(mHals);
-}
-
-MatrixHal *CompatibilityMatrix::getAnyHal(const std::string &name) {
-    auto it = mHals.find(name);
-    if (it == mHals.end()) {
-        return nullptr;
-    }
-    return &(it->second);
-}
-
 const MatrixKernel *CompatibilityMatrix::findKernel(const KernelVersion &v) const {
     if (mType != SchemaType::FRAMEWORK) {
         return nullptr;