Add Interleave iterator

@sfackler was interested in having this adapter, so I hacked it together.
IIRC SaturatingAdd is written in terms of CheckedAdd. The by-reference approach allows for implementing it on more types (e.g. non-Copy types) but by-value tends to be more intuitive. Overall I think the real reason is they were written by different people ;)