Set UTF-8 encoding for Git process.

Starting with version 1.7.10, Git uses UTF-8.
The input and output streams for Git must be set up with
the correct encoding.
Use -z option with git diff-tree.

When -z has been given, diff-tree does not munge pathnames and uses
NULs as output field terminators. This allows for secure parsing of
the output.

Quoted paths were not correctly interpreted as UTF-8. This avoids the
problem by not having quoted paths.
Merge branch 'master' into unicode

Only conflicts regarding extension method StreamWriter.WithEncoding vs
StreamWriter.WithUTF8EncodingWithoutBOM. I kept the more general
WithEncoding.
Unit test fix: run git instead of git.cmd

Recent Git version replaced the git.cmd script with an exe wrapper.
Running git works for both git.cmd and git.exe.
Fix line endings

Somehow the previous merge commit added incorrect line endings.
Test: verify correct commit message after clone

Verify that the commit message is stored correctly in the
CloneProjectWithInternationalCharactersInCommitMessages test.
Creation of the command "init-branch" to manage the cloning of a TFS branch (or all) from a TFS Server (2010, 2012 and 2008 partly)

Compiled for TFS Server 2008, 2010, 2012 and tested with TFS Server 2010, 2012

!! This command need that the clone of the TFS repository was made from the trunk (and not on the whole repository) and with history (not a quick-clone).

Usage for TFS 2010 and 2012 :
-------------------------------
* to clone one branch
git tfs init-branch $/Repository/path <git-branch-name-wished>
ex :
git tfs init-branch $/Repository/ProjectBranch
git tfs init-branch $/Repository/ProjectBranch myNewBranch

* to clone all branches
git tfs init-branch --all

Usage for TFS 2008 :
---------------------
* to clone one branch
git tfs init-branch--parent-branch=$/Repository/ProjectParentBranch $/Repository/path <git-branch-name-wished>

ex :
git tfs init-branch --parent-branch=$/Repository/ProjectParentBranch $/Repository/ProjectBranch
git tfs init-branch --parent-branch=$/Repository/ProjectParentBranch $/Repository/ProjectBranch myNewBranch
init-branch : to manage TFS branches with '.' in their names (which is supported by Git but not by git-tfs at the moment!)
GitRepository : verify if _repository is null before disposing (it could happened...)
init-branch : Update libgit2sharp to use IsValidName()
Merge pull request #232 from pmiossec/tfs_branching

Add "init-branch" to create a git branch for one on the TFS Server
Update unshelve usage.

I got confused by it. It's now consistent with the other commands in its
use of [] and non-delimited placeholders.
Use the ligit2 force.
Fix unshelve.
Use author file to manage author mapping in init-branch command
Save and re-use author file until overwritten
Merge pull request #252 from pmiossec/tfs_branching_authors

Use author file to manage author mapping in init-branch command
Merge pull request #251 from git-tfs/unshelve-fix

Fix unshelve.
Bump to 0.16.
Download correct files for unshelve

Downloading of files was the responsibility of the items themselves,
but to optimize this, it was changed to requesting entire changesets
at once. However, this optimization broke downloading of shelvesets.

The changeset is now responsible for populating the workspace with the
correct files. This allows for different download strategies for real
changesets and shelvesets.