Add Interleave iterator

@sfackler was interested in having this adapter, so I hacked it together.
@sfackler I wish. I think it's just `assert!()` in `Zip` (and therefore here) to ensure that user-defined iterators meet the invariants. The problem is, ideally that testing would occur if the user-defined iterator is compiled with debug asserts enabled, but using `debug_assert!()` here only runs the assert if the standard library is compiled with debug asserts enabled.