Add Interleave iterator

@sfackler was interested in having this adapter, so I hacked it together.
Yeah, I'm not really sure what the correct answer is. I think the asserts are here because the `ExactSize` trait demands invariants that can be broken without `unsafe` code. So the idea is to fail early in any clients of `ExactSize` if the invariant is broken, so that way the client code doesn't break its own invariants. But on the other hand, it really does seem silly to have to constantly assert that a given trait obeys its own invariants.