More routines for operating on iterables, beyond itertools