add git.multi-gc

添加git.multi_gc功能。如果不指定fork的路径列表，与普通gc相同。指定fork_path时认为fork对repo因共享objects存在依赖，这时列出仍各个fork所有refs的有效commits，传递给prune，以保证做prune时不会删除由它们可达的commits
1. dry-run是git做的，不用担心，只是判断待删除的commit是否被forks需要中会遍历，可能稍好的办法是用集合取交
2. 你的意思是它没有考虑所有分支，我的意思是不需要再考虑其它分支。