chore: Extract `turborepo-hash` and `turborepo-types` crates from `turborepo-lib` (#11319)
## Summary
Continues the modularization of `turborepo-lib` by extracting the
`hash/` module into a standalone `turborepo-hash` crate. Also introduces
`turborepo-types` as a foundation crate for shared types.
### New Crates
- **`turborepo-types`**: A foundation layer crate containing shared
types (`EnvMode`, `TaskOutputs`) that are used across multiple crates.
This prevents circular dependencies during future extractions.
- **`turborepo-hash`**: Contains all hashing functionality using Cap'n
Proto for deterministic serialization across languages/platforms, plus
xxHash64 for fast hashing.
### Verification
- All 559 tests pass (545 `turborepo-lib` + 11 `turborepo-hash` + 3
`turborepo-types`)
- Hash values are identical (verified via hardcoded test assertions)
- `proto.capnp` and `traits.rs` are byte-for-byte identical
- Type definitions preserve all derives and serde attributes