pub fn unify_types(t1: &Type, t2: &Type) -> Result<Subst, String>
Unify two types, returning a substitution or an error