Added exception to current()
Fixed exception message
Merged code behind the exceptions
Fixed callable usage
Fixed return statement
Removed unnecessary rewind() calls
Improved tests
Fixed position not being initialized

$position was initially set to NULL, which means that without calling
rewind() the call to valid() has failed.
Fixed iteration