feat(routines): accept dict cadences in create validator
Sprint 4 added dict cadences ({"type": "activity-anticipation", "offset_minutes": -30}) and wired the supervisor dispatcher to handle them, but the CLI validator _validate_routine_cadence was left behind and hard-rejected every non-string cadence. That broke `sol call routines create --template meeting-prep`, forcing manual routines.json edits.
Extend the validator to accept dict cadences with a known `type`, mirroring the dispatcher's int coercion for `offset_minutes`. Add reciprocal sync comments in both the validator and the dispatcher so future cadence types get updated in both places. New tests cover the meeting-prep template, a string override of a dict default, and the missing-type / bad-offset rejection paths.
Co-Authored-By: OpenAI Codex <codex@openai.com>