change and document iterators for consistency

This change alters the design and behavior to be more
consistent with the standard library. Method Step
(returning bool and used in the for loop test) does the
work of fetching new items. Method Current doesn't
advance the iterator; it just returns the current item.

Also add tests and documentation to explicitly describe
side effects.

fixes #29
Now I'm thinking Err should be documented differently, since it doesn't really correspond to an item in the list, but rather a failure of the iterator as a whole. I'll probably push an updated version of this PR tweaking this.