Allow to create local branch from remote git branches

1) Fetches the remote head from the server.
2) Create branch from remote branch head.
3) update the modificationTime each time, update index is run. [Significant improvement in commit, checkout commands).
4) Fix a incorrect type bug in uploadpackParser.
5) Refactored GIt Fetch code to support fetching a branch other than current.

@ussuri