public static IEnumerable<Tuple<T, T>> Join<T>( this IEnumerable<T> a, joinCartesianType t = joinCartesianType.AllPairs )