Support @Immutable for a parcelable

In Java, an immutable parcelable has only final field.
And with regard to List or Map, it is always unmodifiableList or Map

And also, it can be return type or in argument in an interface.

For the other backend, it doesn't affect anything.

Bug: 161506914
Test: atest aidl_integration_test aidl_unittests
Change-Id: If0aee76ac26554c087031371c88f827e56be1d98
diff --git a/aidl_language.h b/aidl_language.h
index ea9fd38..512636d 100644
--- a/aidl_language.h
+++ b/aidl_language.h
@@ -166,6 +166,7 @@
     UTF8_IN_CPP,
     JAVA_PASSTHROUGH,
     JAVA_DEBUG,
+    IMMUTABLE,
   };
   static std::string TypeToString(Type type);
 
@@ -229,6 +230,7 @@
   bool IsNullable() const;
   bool IsUtf8InCpp() const;
   bool IsVintfStability() const;
+  bool IsImmutable() const;
   bool IsStableApiParcelable(Options::Language lang) const;
   bool IsHide() const;
   bool IsJavaDebug() const;