Common list and tuple operations rewritten as type families that operate in the type level, on data-kinded types. Both uncurried (type family) and curried (GADTs to be used with the Apply type family from Singletons) are provided, to work around the inability to partially apply type families.
Added ZipWith family.
Added lengthVal function, replacing the functionality of the removed TypeLength typeclass together with the Length family.
- Changed TypeLength type class to a Length family.
- Fixed Intersection.