git-isvn(1): Start porting from git to libgit2.

It builds! Ship it.

Minor details:

- Build git-isvn(1)/git(1) with -fvisibility=hidden so libgit2 doesn't
  try and call main binary symbols of the same name that don't do what
  it expects
- Checkout (post-clone) is mostly ported over to libgit2. Some details
  missing.
- Transition APIs: Compatible with internal APIs, #define'd out to
  different names. Will "fix" APIs after seperation (hashmap). "Good
  enough" replacement hashmap implementation in.
- Drop dependency on git internal option parsing in favor of small
  wrapper over getopt_long(3).
- SVN revision application / commit (isvn-brancher.c) has been libgit2-
  ified.
- Gradually removing git(1) headers from git-isvn(1) files.
- Fixups: SVN revs w/out author information work; SVN add-copyfroms
  work.
- Fixed: SVN copyfrom dependencies, minor stack overread issue.
- Tree lookups: libgit2 doesn't have a recursive-by-name option!?
- Nothing in git-isvn(1) directly pulls in git(1) headers.
- Run-time configurable # fetch, commit threads; rev-chunk batch size.
- Proper hash function (mmh3); hashmaps now resize.
- Just use BSD sys/queue.h.
- Apply multi-branch revs more correctly
  * Don't mark the rev commitdone until all commit
  * One git-commit per (git branch, SVN revision)
  * Revmap is 1:N (SVN:Git) as SVN is less strict about branches.
- Workaround bizarre glibc fmemopen(NULL, 0) behavior (it fails).

TODO:
- Further detach from git(1): vcs-svn/
- Fix remaining TODO and XXX items throughout git-isvn(1).