Add a new version of zip that assumes that all iteratees have equal
lengths. The difference compared to zip_first is that zip_equal
checks this assumption in builds with assertions enabled.
This will allow us to clearly express the intent when working with
equally-sized ranges without having to write this assertion manually.
This is similar to Python's zip(..., equal=True) [1] or
more_itertools.zip_equal [2].
I saw this first suggested by @benvanik.
[1] https://peps.python.org/pep-0618/
[2] https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.zip_equal