perf: remove duplicate git construction (#7194)
### Description
I noticed in the profile that we were calling `SCM::new` multiple times
which should be avoided since this results in FS.
This PR does 2 things:
- Passes existing `SCM` instance around to all the places we were
constructing a new instance
- Kick of a thread to construct the `SCM` instance as soon as we start
run, this means it will usually be ready by the time we need it.
### Testing Instructions
Old profile:
<img width="2321" alt="Screenshot 2024-01-31 at 9 19 56 AM"
src="https://github.com/vercel/turbo/assets/4131117/bba04e6b-da2e-4051-9284-27abef6ea094">
New profile:
<img width="2319" alt="Screenshot 2024-01-31 at 9 17 51 AM"
src="https://github.com/vercel/turbo/assets/4131117/907a67cd-327d-4a80-914d-2f99bec81c60">
Note how we now are able to construct the `SCM` before the package graph
finishes building meaning it's available for filtering the graph
immediately.
Closes TURBO-2206