AAPT2: Support static lib referencing static lib

When a static library A references static library B,
and app C references both A and B, we get the following symbol merging,
symbols from library B get imported twice.

We must only check that symbol references to library B are valid
when building library A. We should only merge all the symbols
when building final app C.

Change-Id: I23cba33b0901dcbb5328d9c9dfaa6a979c073c36
diff --git a/tools/aapt2/ResourceValues.h b/tools/aapt2/ResourceValues.h
index f8ece6f..b448bd8 100644
--- a/tools/aapt2/ResourceValues.h
+++ b/tools/aapt2/ResourceValues.h
@@ -222,6 +222,7 @@
 
     bool isWeak() const override;
     virtual Attribute* clone(StringPool* newPool) const override;
+    void printMask(std::ostream& out) const;
     virtual void print(std::ostream& out) const override;
 };
 
@@ -280,6 +281,10 @@
     return out;
 }
 
+inline ::std::ostream& operator<<(::std::ostream& out, const Attribute::Symbol& s) {
+    return out << s.symbol.name.entry << "=" << s.value;
+}
+
 /**
  * The argument object that gets passed through the value
  * back to the ValueVisitor. Subclasses of ValueVisitor should