Updated next() method to satisfy the iterator contract and not throw a null pointer exception

Updated next() method to satisfy the iterator contract and not throw a null pointer exception, if it was called without hasNext() being called.

The previous implementation did not initialize the *currentSegmentIterator*, unless *hasNext()* has been called, which lead to unexpected *NullPointerException*.
I've changed the impl to call *hasNext()* prior to the next call.