I just noticed that the `zip` operator has generics ordered as `<R, T0, T1, T2, T3>`. This differs from Rx.Net and Func\* classes which are like `Func4<T1, T2, T3, T4, R>`. This would be a breaking change, but should we do it to get consistency of ordering the return type always as the last generic?