make iterator objects a bit nicer to use

Can now use them like `x.transform(|i| i + 3).zip(y.filter(|i| i % 2)`.