CompatibilityMatrix::addAllHalsAsOptional: avoid duplicate versions.

Make a copy of the <hal> tag that contains only that <version>.

For example, if level=1 requires foo@1.0, and level=2 requires
foo@{1.0 OR 2.0}, then in the output matrix:
- 1.0 required
- 2.0 optional

(Previous behavior is
- 1.0 required
- {1.0 OR 2.0} optional
where 1.0 is stated twice.)

Test: build without duplicate versions
Change-Id: I7b4f32e6c131dd77f4308e7cd8b8b78a30a2169f
diff --git a/CompatibilityMatrix.cpp b/CompatibilityMatrix.cpp
index 7afaa9b..c43c483 100644
--- a/CompatibilityMatrix.cpp
+++ b/CompatibilityMatrix.cpp
@@ -108,8 +108,10 @@
             std::tie(existingHal, existingVr) = getHalWithMajorVersion(name, vr.majorVer);
 
             if (existingHal == nullptr) {
-                halToAdd.optional = true;
-                if (!add(std::move(halToAdd))) {
+                MatrixHal optionalHalToAdd(halToAdd);
+                optionalHalToAdd.optional = true;
+                optionalHalToAdd.versionRanges = {vr};
+                if (!add(std::move(optionalHalToAdd))) {
                     if (error) {
                         *error = "Cannot add HAL " + name + " for unknown reason.";
                     }