replace option::iter with a BaseIter impl
auto merge of #5212 : thestinger/rust/iter, r=graydon

A small step towards fixing #2827