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.
bootstrap automatically the remote we are working on if needed
Extract a Bootstrapper class.
Unit test for Autobootsrap when using -I option

Auto bootstap 'tfs/default' for first remote created
Unit test for Autobootsrap when using -I option on a branch

Auto bootstap 'tfs/default' for first remote created
Auto bootstap 'tfs/branch' for second remote created

Extand IntegrationHelper to be able to create a more complexe test case...
Unit test for Autobootsrap when using -I option on a merge commit

Extand IntegrationHelper to be able to create a more complexe test case...
remove /bin/sh option added
Auto selection of the tfs remote is now the default behavior
AutoSelect remote only for command that need it
When no remote found, return DefaultRepositoryId `default`
refactoring (same behavior)
Adjustements on comments and messages
Unit Tests for Auto select remote
Unshelve: remove a similar tfs remote chooser
Update TfsWriter with auto select remote
Update Auto-bootstrap unit tests because `-I` option is no more needed...
Adapt Shelve unit tests
IncludeInFetch support when new file was merged