add git.multi-gc

添加git.multi_gc功能。如果不指定fork的路径列表，与普通gc相同。指定fork_path时认为fork对repo因共享objects存在依赖，这时首先会在repo上dry-run一遍获取本repo需要删除的commits，然后结合各个fork从中筛出仍被fork依赖的commits，传递给prune，以保证prune时不会被误删
@lihuanshuai 是不是用```os.walk```能满足这个需求，还是需要每个都判断一定是P_OBJ?