Separate AIDL types and target language types

This CL is the start of the attempt to clearly separate AIDL types from
target language types. Previously, things that are specific to AIDL were
handled by the Type classes which are modeling target language types.
For example, to test whether an AIDL type can be an out parameter, we
had to look up the corresponding Java type class for the AIDL type and
then ask the question to the Java type class.

Here are key classes in the new design:

1) Children of AidlNode (aidl_language.h)
These form an AST of the input AIDL file. Nothing here is specific to
the target language.

2) AidlTypenames (aidl_typenames.h)
This class is a collection of all AIDL types that are available for the
current run of the AIDL compiler. It includes built-in AIDL types (e.g.,
int, boolean, List, etc.) and defined AIDL types (interfaces and
parcelables). The define AIDL types are stored as AidlNode.

All AIDL specific rules (e.g. the types that can be an out parameter)
are defined/implemented here.

3) aidl_to_java.h / aidl_to_cpp.h (not exist yet)
This header contains functions that translates AIDL things to Java or
C++ things. For example, it provides a function that provides a code
fragement for writing a variable of an AIDL type to the parcel.

4) Type and its children (type_java.h and type_cpp.h)
These are legacy classes that models a type in the target language.
These will be removed in favor of AidlTypenames and
aidl_to_[java|cpp].h. However, until the transition is over, we will
heep them.

5) TypeNamespace (type_namespace.h)
This is the legacy class that is a collection of Type. This corresponds
to AidlTypenames in the new design and will be removed when the
transition is over. Until then, AidlTypenames will be accompanied by
TypeNamespace.

Bug: 110967839
Test: m -j
Test: runtests.sh
Change-Id: I88d62ad8d33fd22dd5c401bd94d3cafd0c70a4a6
diff --git a/Android.bp b/Android.bp
index 7d3e00f..25ea2d0 100644
--- a/Android.bp
+++ b/Android.bp
@@ -44,6 +44,7 @@
         "aidl_language_l.ll",
         "aidl_language_y.yy",
         "aidl_typenames.cpp",
+        "aidl_to_java.cpp",
         "ast_cpp.cpp",
         "ast_java.cpp",
         "code_writer.cpp",