[Waiting Review] Improvements in Tfs branches support

This pull request bring bing improvements in TFS branch support:
* auto initialization of a tfs branch, if needed, and fetching needed changesets when encountering a merge changeset to be able to create the merge commit with its 2 parents (default behavior). See image below...
* tfs branch renaming
* baseless merge (when the merge changeset was a merge of a branch without the same base as the trunk branch)
* add a `--ignore-branches` option to ignore merge changeset and process it as a normal changeset (for those that can't manage branches due to a messy tfs repository).

![git-tfs_branches](https://f.cloud.github.com/assets/460196/2117414/a0bbf8c4-90ca-11e3-9476-cfc0b760fcb3.png)
If I clone tfs/default (`git tfs clone https://tfs.codeplex.com:443/tfs/TFS16 $/vtccds/trunk`) and it encounter a merge changeset, it create and fetch automatically the branch tfs/b1 to be able to create the merge commit.