Add Interleave iterator

@sfackler was interested in having this adapter, so I hacked it together.
You can't actually re-use `calc_size()` here. The problem is the lower bound wants `saturating_add()` as you have, but the upper bound actually wants `checked_add()`. If the upper bound overflows you need to return `None`.

I suppose you could rewrite `calc_size()` to use `checked_add()` instead and have the lower bound use `.unwrap_or(uint::MAX)`.