Added equals() and hashCode() to HiveType classes
Fixed generation of union types by computing least upper bound for Kinds