Refactor interface and enum type- and parent-related methods

Make EnumType typeChain has the same syntax
(same name and same return way instead of result by pointer).

Add EnumType::superTypeChain by analogy with Interface::superTypeChain.
Add Interface::allSuperMethodsFromRoot as a mixture of
Interface::allSuperMethodsFromRoot and Interface::superTypeChain.

Test: build hidl-gen, hidl_test
Change-Id: I0af678eab7a563b471f041599ff83bc2b4b9764a
diff --git a/Interface.cpp b/Interface.cpp
index 2acb5a0..db5d682 100644
--- a/Interface.cpp
+++ b/Interface.cpp
@@ -572,6 +572,10 @@
     return v;
 }
 
+std::vector<InterfaceAndMethod> Interface::allSuperMethodsFromRoot() const {
+    return isIBase() ? std::vector<InterfaceAndMethod>() : superType()->allMethodsFromRoot();
+}
+
 Method *Interface::lookupMethod(std::string name) const {
     for (const auto &tuple : allMethodsFromRoot()) {
         Method *method = tuple.method();