Add @UnsupportedAppUsage annotation

AIDL annotation @UnsupportedAppUsage is addd. When an interface, a
parcelable, a method, or a field is annotated with it, the generated
Java code will be annotated with a Java annotation
android.annotation.UnsupportedAppUsage.

This CL also fixes the problem that comments are not emitted when it is
before an annotation, i.e.,

AIDL:
/* some comment */
@annotation
parcelable IData {...}

This is happening because comments are attached to the very next token,
but annotation doesn't support it. Fixing the issue by allowing
AidlAnnotation to have comments and copying the comments from the
annotation to the type.

Bug: 113581267
Test: aidl_unittests successful

Change-Id: I0c421560c0c277ce8a57cdba3f6bdb64b149caec
diff --git a/aidl.cpp b/aidl.cpp
index c79d627..e0e4c58 100644
--- a/aidl.cpp
+++ b/aidl.cpp
@@ -396,14 +396,15 @@
     AidlLocation location = AidlLocation(filename, point, point);
 
     if (decl == "parcelable") {
-      AidlParcelable* doc =
-          new AidlParcelable(location, new AidlQualifiedName(location, class_name, ""), package);
+      AidlParcelable* doc = new AidlParcelable(
+          location, new AidlQualifiedName(location, class_name, ""), package, "" /* comments */);
       types->AddParcelableType(*doc, filename);
       typenames.AddPreprocessedType(unique_ptr<AidlParcelable>(doc));
     } else if (decl == "structured_parcelable") {
       auto temp = new std::vector<std::unique_ptr<AidlVariableDeclaration>>();
-      AidlStructuredParcelable* doc = new AidlStructuredParcelable(
-          location, new AidlQualifiedName(location, class_name, ""), package, temp);
+      AidlStructuredParcelable* doc =
+          new AidlStructuredParcelable(location, new AidlQualifiedName(location, class_name, ""),
+                                       package, "" /* comments */, temp);
       types->AddParcelableType(*doc, filename);
       typenames.AddPreprocessedType(unique_ptr<AidlStructuredParcelable>(doc));
     } else if (decl == "interface") {