Changed the iterator interface

1. Added "moveNext" method & "current" property to:
a. Make the behaviour consistent with the standard Iterator interface with C# (my personal bias)
b. Fix an issue w.r.t getting a trailing null element in case of invalid output towards the end of collection (fixed by deferring the evaluation to moveNext method as opposed to the method/property that fetches the current element in collection)