Add isHomogeneous and isHeterogeneous for Tuple
Refactor to use T.Types, make isHeterogeneous depend on isHomogeneous
commit