Fix clang-tidy warnings in aapt and aapt2.

* Add explicit keyword to conversion constructors.
* Add NOLINT(implicit) comments for implicit conversion constructors.
Bug: 28341362
* Use const reference type for read-only parameters.
Bug: 30407689
* Add NOLINT to suppress wrong clang-tidy warnings on macros.
Test: build with WITH_TIDY=1

Change-Id: Ibfafb23d9be463b4072745a51a6d9f1812dcac45
diff --git a/tools/aapt2/Diagnostics.h b/tools/aapt2/Diagnostics.h
index e86f2a8..725027c 100644
--- a/tools/aapt2/Diagnostics.h
+++ b/tools/aapt2/Diagnostics.h
@@ -41,13 +41,13 @@
 public:
     DiagMessage() = default;
 
-    DiagMessage(const StringPiece& src) : mSource(src) {
+    explicit DiagMessage(const StringPiece& src) : mSource(src) {
     }
 
-    DiagMessage(const Source& src) : mSource(src) {
+    explicit DiagMessage(const Source& src) : mSource(src) {
     }
 
-    DiagMessage(size_t line) : mSource(Source().withLine(line)) {
+    explicit DiagMessage(size_t line) : mSource(Source().withLine(line)) {
     }
 
     template <typename T>