git clone instead of git archive + git submodule support

First, we change unpacking of git from source cache so that `git clone` is used instead of `git archive` to unpack from source cache. We use the `--shared` flag which should be safe in this situation considering the extracted sources will be deleted after the build.

Then, building on this, we add support for git submodules in the git source cache.

One just fetches the git repo like normal; at fetch-time Hashdist will automatically inspect `.gitmodules` under the repo and recursively also fetch the repositories mentioned there. These repos will be given names in source cache according to their path; e.g., ParaView/Utilities/VisItBridge will be `~/.hashdist/src/git/ParaView.Utilities.VisItBridge` (I simply assume there's no collision when replacing `/` with `.` for now).

When unpacking, first the repo is cloned, then `git config` is called to override the submodule paths to point to what we have in source cache, and finally a `git submodule update --init` makes git clone the submodules from source cache.

@robertmaynard, can you report back on whether this works well for you (i.e. check out this branch and try to build with it and see if your expectations are fullfilled).

@ahmadia