sync: switch local checkout to multiprocessing
sync: switch local checkout to multiprocessing

This avoids GIL limitations with using threads for parallel processing.
In a CrOS checkout with ~1000 repos, the nop case goes from ~6 sec down
to ~4 sec with -j8.  Not a big deal, but shows that this actually works
to speed things up unlike the threading model.

This reworks the checkout logic to return results for processing in the
main thread instead of leaving every thread to do its own processing.

Bug: https://crbug.com/gerrit/12389
Change-Id: I143e5e3f7158e83ea67e2d14e5552153a874248a
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/298063
Reviewed-by: Chris Mcdonald <4ca9f429749ea29f0277a76979656ec13beb5513@google.com>
Tested-by: Mike Frysinger <8f3f75c74bd5184edcfa6534cab3c13a00a2f794@google.com>

GerritCodeReview/git-repo,lewixliu/git-repo,GerritCodeReview/git-repo,couchbasedeps/git-repo,couchbasedeps/git-repo,lewixliu/git-repo