Removed the iterator's current() and *Previous() methods.

The code was too complex for what it was intended to do.
I would be willing to support the current and previous methods IF I had a good use case for them.

Current is only useful if you lost the value returned by next or previous...which is your own damn fault.

Previous is an interesting beast.
While it sounds useful, I have never come across a place where having a previous function would of been beneficial.
If your algorithm relies on knowing previous values, you should maintain those references yourself.
If your use case is too complex for the above statement, then you might want to rethink the use of a simple iterator and/or your algorithm in general.

The only usecase have ever come across where previous COULD be used would be reverse iterating over a collection.
In that case, I prefer the reverse iterator approach where you still use the next functions, but the iterator moves in a reverse order.
In the interest of time spend testing and implementing, I will ignore reverse iterators unless someone yells at me.