Add filesystem iterator variant

This adds a new iterator type for scanning the filesystem from a root directory.

- [x] add `git_iterator_for_filesystem()` and `GIT_ITERATOR_TYPE_FS`
- [x] make workdir iterators be a wrapper around filesystem iterator (which implies hooks or some other way to add ignore support, skipping of `.git` entries, and submodule detection)
- [x] tests for filesystem iterators
- [x] test on Windows filesystem
- [x] test on Linux filesystem
- [x] run valgrind to make sure there are no new leaks