Detect a rename changeset (where all the datas are deleted) and prevent it

and Add Unit Test in ChangeSieveTests to support branch deletion
Ensure that other deleted directories don't affect this project.
Also don't fetch anything if it's just going to be deleted and ignored.
Find the REAL root changeset when there is rename changeset(s) and get the list of successive branches...

and manage case where using flag '--nofetch' but with renamed branches
Add debug datas
Manage rename tfs branch the good way
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)
Finding root changeset: better finding of renaming

- Protection against find itself as parent branch
- Support of renaming of renaming
- keep the last "renamed" merge is important when no root found (with what is supposed to be the root branch)

+ catch problem when finding root changesets
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)
Fetch just changesets needed (until merge changeset)
Find the sha of the root changeset of the tfs branch to create
Before initialising a new branch, verify that it has not already been done
better way to find if changesets fetched