chore: Extract `turborepo-diagnostics` crate from `turborepo-lib` (#11332)
## Summary
Extracts the diagnostics module (~465 lines) from `turborepo-lib` into a
new `turborepo-diagnostics` crate as part of the ongoing effort to
decompose the monolithic turborepo-lib.
## Changes
- **New crate**: `crates/turborepo-diagnostics/` containing:
- `DiagnosticMessage` enum
- `DiagnosticChannel` for diagnostic communication
- `Diagnostic` trait
- Built-in diagnostics: `GitDaemonDiagnostic`, `DaemonDiagnostic`,
`LSPDiagnostic`, `UpdateDiagnostic`
- **turborepo-lib changes**:
- `diagnostics.rs` now re-exports from the new crate
- `RemoteCacheDiagnostic` remains in turborepo-lib (depends on internal
`CommandBase` and `link()`)
- `UpdateDiagnostic` API changed to take version as parameter (enables
decoupling from `get_version()`)
## Behavioral Impact
**Zero behavioral changes for CLI users.** The `turbo scan` command
works exactly the same:
- All diagnostic logic is identical
- `UpdateDiagnostic` receives the same version value (just passed at
construction instead of fetched internally)
- Full backward compatibility via re-exports
## Testing
- `cargo check --workspace` passes
- `cargo check -p turborepo-diagnostics -p turborepo-lib` passes
## Progress
This brings turborepo-lib decomposition to ~82% complete (~20,500 lines
remaining, down from 38,752).