Yeah, I'm not fond of this iterator API at all. If I'm not mistaken, you cannot do `while(git_iterator_advance(...))` in a loop because that would skip the first entry. Is this correct? This is at odds with every other iterator in the library. I don't like that it has `_current` API either. It seems like a workaround to the fact that the iterator `_advance` skips the first entry.

Ideally, this look would look just like this:

```c
while (!git_iterator_next(&entry, fsit) == 0) {
    ...
```

Note that I'm not checking whether entry is NULL either. The iterator should return `GIT_ITEROVER` when it's empty.