Use TreeDefinition instead of index to build tree
Merge remote-tracking branch 'origin/master' into no-index

Conflicts:
	GitTfs/Core/TfsChangeset.cs
Use LibGit2Sharp.Mode in place of strings.
Split IGitTreeBuilder.

IGitTreeModifier: TfsChangeset only needs the Add and Remove methods. So
those methods are part of IGitTreeModifier.

IGitTreeBuilder: GitTfsRemote needs to pass a IGitTreeModifier to
ITfsChangeset, and call GetTree() too.
:fire: GitIndexInfo
:fire: HashAndInsertObject
:fire: temporary index stuff

This dropped the time to run unit tests on my machine from ~8.3s to ~6.6s!
:fire: more obsolete code
Merge pull request #529 from spraints/no-index

No more GitIndexInfo
Improve finding commit for changeset number

Because commits can be shared across branches, it is better to do a single
search starting from the branches than to do a search for each branch
separately. The revision walking implemented in the git library will take
care of efficiently enumerating the graph, not visiting shared commits
multiple times.
Merge pull request #531 from kgybels/improve_find_commit_by_id

Improve finding commit for changeset number