Replace the request-path-sniffing `shouldHydrate()` approach with explicit
hydration contracts (`HydratesValuesForFrontend`, `HydratesValuesForFilament`)
so each field class declares exactly how its value should be transformed for
frontend rendering vs Filament admin forms.
Key changes:
- Add `HydratesValuesForFrontend` and `HydratesValuesForFilament` contracts
- Add `DispatchesHydration` trait for dispatching to the right contract
- Implement both contracts on all built-in field types
- Register all built-in fields in FieldsServiceProvider (previously only Text)
- Fix Select relation resolution in nested Builder/Repeater context by
preferring `$this->field_model` over the parent's model
- Text field no longer wraps in HtmlString on frontend (only Textarea,
MarkdownEditor, and RichEditor do)
- Replace MySQL-specific FIELD() with PHP-based ordering in getContentRelation
- Improve backstage:audit command: timeouts/unreachable shown as warnings,
slow page detection, per-page timing, --timeout and --slow options
- Move core package tests to monorepo-level test suite (SQLite :memory:)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>