Generate code for AIDL defined string constants

Also validate that constant names are not duplicated between
integer and string constants.

Bug: 28233277
Test: Unittests expanded to reflect this change.
      Integration tests expanded to reflect this change.

Change-Id: If46619151cf6ff0146a2dfa90b863b096435a30a
diff --git a/ast_java.cpp b/ast_java.cpp
index 44e298d..1ba723c 100644
--- a/ast_java.cpp
+++ b/ast_java.cpp
@@ -417,11 +417,16 @@
   }
 }
 
-void Constant::Write(CodeWriter* to) const {
+void IntConstant::Write(CodeWriter* to) const {
   WriteModifiers(to, STATIC | FINAL | PUBLIC, ALL_MODIFIERS);
   to->Write("int %s = %d;\n", name.c_str(), value);
 }
 
+void StringConstant::Write(CodeWriter* to) const {
+  WriteModifiers(to, STATIC | FINAL | PUBLIC, ALL_MODIFIERS);
+  to->Write("String %s = %s;\n", name.c_str(), value.c_str());
+}
+
 void Class::Write(CodeWriter* to) const {
   size_t N, i;