Add Interleave iterator

@sfackler was interested in having this adapter, so I hacked it together.
Went with a private function for the reasons you stated. I'm working on compiling again but I made the mistake of switching branches and rebuilding everything takes like... 3 hours on my laptop.

Otherwise I think I've addressed your latest batch of issues?