Add filesystem iterator variant

This adds a new variant iterator that is a raw filesystem iterator
for scanning directories from a root.  There is still more work to
do to blend this with the working directory iterator.
Make workdir iterator use filesystem iterator

This adds some hooks into the filesystem iterator so that the
workdir iterator can just become a wrapper around it.  Then we
remove most of the workdir iterator code and just have it augment
the filesystem iterator with skipping .git entries, updating the
ignore stack, and checking for submodules.
More filesystem iterator cleanup

Renamed the callback functions and made some minor rearrangements
to clean up the flow of some code.
More filesystem iterator tests

Refactors the helper function that builds a directory hierarchy
and then made use of it to try more variations on filesystem
iterator tests.
Fix uninitialized var warnings
Fix fs iterator test on case sensitive fs
Fix win64 warnings
Fix workdir iterator leak

When attempting to create a workdir iterator for a bare repo,
don't leak the iterator structure.
Fix some minor issues
Merge pull request #1479 from arrbee/iterator-for-directory

Add filesystem iterator variant
remote: specify what values direction can mean in git_remote_connect()

This fixes #1487
alloc doesn't take a refdb; git_refdb_free nicely in the tests
Merge pull request #1491 from ethomson/backends_dont_refdb

alloc doesn't take a refdb
Plug a couple of leaks
mailmap: Coalesce some identities
Merge pull request #1494 from nulltoken/fix/mailmap

mailmap: Coalesce some identities
Move git_config_backend to include/git2/sys

Moving backend implementor objects into include/git2/sys so the
APIs can be isolated from the ones that normal libgit2 users
would be likely to use.
Move odb_backend implementors stuff into git2/sys

This moves some of the odb_backend stuff that is related to the
internals of an odb_backend implementation into include/git2/sys.

Some of the stuff related to streaming I left in include/git2
because it seemed like it would be reasonably needed by a normal
user who wanted to stream objects into and out of the ODB.

Also, I added APIs for traversing the list of backends so that
some of the tests would not need to access ODB internals.
Added git_repository_new function
Move some low-level repo fns to include/git2/sys