"Add basic worktree support"

This patch set is meant to start addressing #2619 (closed) which is to enable support for the new worktree functionality.

This patch includes the work of:

Patrick Steinhardt: submitted a pull request (that has not yet been accepted) to the libgit2 project

@ch3cooli: started implementing the new worktree support into tortoisegit

I have been using the first couple of evolutions of this patchset in my production work environment and have finally got it to a point where it is ready to be presented to the general public for more suggestions.

I realize that the the upstream Git community still calls git worktree's experimental, however I need this in production and the git-for-windows community does not support the predecessor to git worktree git-new-workdir and would like to now start supporting worktree

Known to be working:

  • Ordinary operations of tortoise git
  • All tests pass
  • Linked worktree's now work with TortoiseGitProc
  • Linked worktree's now work with TGitCache
  • A couple more tests were added to test worktrees.

Known Issues

  • Attempting to delete a branch from a disconnected worktree throws error "Could not delete reference. libgit2 returned: Reference 'refs/heads/branch' not found" will need more debugging)
  • More tests could afford to be written for worktrees
  • Need to test this patch set with TGitMerge/TGitIDiff. One specific thing to test is "Does resolving conflicts from TGitMerge/TGitIDiff work"

Former Known Issues that are now resolved

  • Files in submodules do not appear to be reporting proper file status via TGitCache (which makes sense due to the .git file that worktree uses as well so that