re-implementation of git cms-init

implement git cms-init to match the expected behaviour of git-cms-addpkg

for example, running git cms-init in an empty CMSSW_7_0_0_pre2 area will
 - clone the official repository, using a local reference, inside $CMSSW_BASE/src and call it "official-cmssw"
 - add the user's repository as my-cmssw, and read all branches and tags from it
 - do not checkout any files, and set up sparse checkout using .gitignore as only entry (no need for FWCore/Version)
 - create the local branch "CMSSW_7_0_X" to track "official-cmssw/CMSSW_7_0_X"
 - create a new local branch "from-CMSSW_7_0_0_pre2" branching off at the commit corresponding to CMSSW_7_0_0_pre2

I've tested it with git 1.7.x (SLC6) and 1.8.x (SLC5 and CMSSW's), in releases that did and did not include a .gitignore file, and it seems to work in every case.

Supports the same options as git-cms-addpkg (--ssh, --http, etc.).