Build POST /api/weekly-plans to save selected meals for a week
#8Acceptance Criteria
Authenticated request with a week identifier and an array of meal ids returns HTTP 200; data is persisted in weekly_plans and plan_meals tables; subsequent GET /api/weekly-plans/:week returns the saved plan