fix(dry): do not perform runtime validations on dry runs (#10375)
### Description
I was poking around and hit a case where I couldn't use dry run if it
included interactive tasks or too many persistent tasks for the
concurrency.
These checks don't make sense for `--graph` or `--dry` since we're not
actually executing the graph.
### Testing Instructions
Added unit tests making sure that these checks are skipped.
Quick manual test:
```
[0 olszewski@macbookpro] $ turbo run dev --dry=json > /dev/null
turbo 2.5.1-canary.1
x Invalid task configuration
|-> x You have 19 persistent tasks but `turbo` is configured for concurrency of 10. Set --concurrency to at least 20
`-> x Cannot run interactive task "vercel-ship#dev" without Terminal UI. Set `"ui": true` in `turbo.json`, use the `--ui=tui` flag, or set `TURBO_UI=true` as
| an environment variable.
[1 olszewski@macbookpro] $ turbo_dev --skip-infer dev --dry=json > /dev/null
turbo 2.5.1
[0 olszewski@macbookpro] $
```