Limit version scope for querying merge information

When querying the merge information to determine the source changeset of a
merge, limit the version scope of the query to the bare minimum to improve
performance.

Since the QueryMerges overload taking strings for source and target calls
the overload with ItemSpecs, there is also no need to have a seperate post
VS2010 implementation. At least this is the case for v12.020827.3 of
Microsoft.TeamFoundation.VersionControl.Client.dll.
Merge pull request #532 from kgybels/improve_find_merge_parent

Limit version scope for querying merge information
Detect a rename changeset (where all the datas are deleted) and prevent it
Find the REAL root changeset when there is rename changeset(s)
and get the list of succecively branches...
Manage case where using flag '--nofetch' but with renamed branches
Add debug datas
Manage rename tfs branch the good way
Corrections...
Don't create git branch when renamed branch!
Delete remotes corresponding to renamed branches
Manage and don't stop initializing branches if some fails (and report at the end of the process)
protection against find itself as parent branch
catch problem even when finding root changesets
renamed branch : keeping the last "renamed" merge is important when no root found (with want is supposed to be the root branch)

In this case, we encounter a renamed branch...
Correct UnitTests
Move InitBranch() in the GitTfsRemote (to be able to init one from there!)
write what should be done...
being able to fetch until a changeset is reached
Retrieve also deleted tfs branches if needed
Create on the fly the missing remote (with fake Sha1 for the moment)