libcore::iter Refactor Iterator::next() for Skip

So I simplified the code, taking into account the points raised in the discussion.

I added some benchmarks, and verified that the performance improved. It's about twice as fast on the benchmarks.

I also fixed the fact that self.n was not correctly updated when the iterator is consumed before skipping self.n steps. In that case self.n was set to 0 when it should be set to the number of remaining steps to skip.