Build AST graph explicitly for simpler post-parsing passes

Puts all of AST parent-child dependencies into a graph.
This change also makes it able to not care about such case:
Type -> (non Type) -> Type (ex. Interface -> Method -> Type)
and to store only Type -> Type relations.

Test: hidl_test
Change-Id: Ic67d9833d9519d7bd6cbae603c556c5bd905167a
diff --git a/Scope.h b/Scope.h
index f1d5401..8d5ec1c 100644
--- a/Scope.h
+++ b/Scope.h
@@ -54,6 +54,8 @@
 
     void setAnnotations(std::vector<Annotation*>* annotations);
 
+    std::vector<Type*> getDefinedTypes() const override;
+
     virtual status_t resolveInheritance() override;
     virtual status_t evaluate() override;
     virtual status_t validate() const override;