Add namespace handling in attribute values

Previously, you could only reference namespace prefixes in attribute names:

<View xmlns:appcompat="http://schemas.android.com/apk/res/android.support.v7.appcompat"
      appcompat:name="hey"
      ...

Now you can also reference them in resource names within an attribute value:

      ...
      android:text="@appcompat:string/confirm"
      ...

Which will be treated as "@android.support.v7.appcompat:string/confirm".

Change-Id: Ib076e867a990c80cf877a704eb77cd1ef0b23b52
diff --git a/tools/aapt2/StringPool.h b/tools/aapt2/StringPool.h
index 64772a4..14304a6 100644
--- a/tools/aapt2/StringPool.h
+++ b/tools/aapt2/StringPool.h
@@ -127,7 +127,7 @@
     using const_iterator = std::vector<std::unique_ptr<Entry>>::const_iterator;
 
     static bool flattenUtf8(BigBuffer* out, const StringPool& pool);
-    static bool flatten(BigBuffer* out, const StringPool& pool);
+    static bool flattenUtf16(BigBuffer* out, const StringPool& pool);
 
     StringPool() = default;
     StringPool(const StringPool&) = delete;
@@ -193,6 +193,8 @@
     friend const_iterator begin(const StringPool& pool);
     friend const_iterator end(const StringPool& pool);
 
+    static bool flatten(BigBuffer* out, const StringPool& pool, bool utf8);
+
     Ref makeRefImpl(const StringPiece16& str, const Context& context, bool unique);
 
     std::vector<std::unique_ptr<Entry>> mStrings;