add git.multi-gc

添加git.multi_gc功能。如果不指定fork的路径列表，与普通gc相同。指定fork_path时认为fork对repo因共享objects存在依赖，这时首先会在repo上dry-run一遍获取本repo需要删除的commits，然后结合各个fork从中筛出仍被fork依赖的commits，传递给prune，以保证prune时不会被误删
这个函数的实现，不太符合预期，应该用 `listall_references` 这样才安全。