Add acyclic check pass to hidl-gen

Adds recursive tree pass that checks that directed graph of
definitions and references is acyclic.
It prints nice error message, which shows the whole found cycle.

To be really tested, it requires lookups to be moved outside of parsing.

Test: hidl_test
Bug: 31827278

Change-Id: I9e96fa8206cfb84a56298991c526f71befae1478
diff --git a/VectorType.cpp b/VectorType.cpp
index 50ceef0..d09c226 100644
--- a/VectorType.cpp
+++ b/VectorType.cpp
@@ -81,6 +81,10 @@
     return mElementType->canCheckEquality();
 }
 
+std::vector<Reference<Type>> VectorType::getStrongReferences() const {
+    return {};
+}
+
 std::string VectorType::getCppType(StorageMode mode,
                                    bool specifyNamespaces) const {
     const std::string base =