Avoid needless instantiation of LocalPantsRunner (#9450)
Avoid needless instantiation of LocalPantsRunner (#9450)

### Problem

Currently when pants is run against pantsd, the `DaemonPantsRunner.run` method will use some class methods on `LocalPantsRunner` and a few other classes to do argument-parsing as well as other preparation for a run, and then pass the values created in this process to `graph_run_v2` on `SchedulerService`, which actually runs v2 and ambiguous goals. Once this is complete, the `run` method will then instantiate a new copy of `LocalPantsRunner`, which will re-do a bunch of that same initialization work, and then execute only the v1 goals using the normal `LocalPantsRunner` flow. Since options parsing takes a noticeably long time to happen (very roughly a quarter-second), this doubled work is noticeable to end users.

### Solution

Only instantiate an instance of `LocalPantsRunner` if v1 is set.

### Result

Testing locally against a warm instance of pantsd with `--v2 --no-v1`, I can see the reduction in the number of calls made to the options-parsing methods as recorded by a profiler such as `py-spy`. Running `time ./pants` shows that with this change, the average amount of time it takes for the pants binary to return with a result and exit seems to decrease by very roughly half a second.
pantsbuild/pants,pantsbuild/pants,tdyas/pants,pantsbuild/pants,jsirois/pants,benjyw/pants,pantsbuild/pants,tdyas/pants,jsirois/pants,pantsbuild/pants,pantsbuild/pants,tdyas/pants,tdyas/pants,benjyw/pants,pantsbuild/pants,tdyas/pants,benjyw/pants,tdyas/pants,tdyas/pants,benjyw/pants,tdyas/pants,benjyw/pants,jsirois/pants,tdyas/pants,benjyw/pants,benjyw/pants