Backend changes (frontend + tests follow in next commit):
Dose scheduling:
- New DoseSchedule struct (times_per_day + days_of_week) as a top-level
plaintext field on Medication. Create/update requests accept it.
- Revised get_adherence: computes scheduled_doses from the schedule over the
period (days_of_week filtering), so missed doses are now reflected.
Falls back to taken/total_logged when no schedule.
Health stats zero-knowledge:
- HealthStatistic model now uses opaque encrypted_data blob (like medications).
Only recorded_at stays plaintext (filterable/sortable).
- HealthStatResponse wire type. Handlers echo opaque blobs.
- Removed the trends endpoint (server can't compute trends on ciphertext;
frontend computes them client-side after decrypting).
- Deleted the dead HealthData model (kept EncryptedField which it defined).
Verified: backend 24 tests, 0 clippy warnings.