Enforce that a code review must be completed and approved before a task can be marked as 'done'.

Currently, Claude can skip the review step and directly set the task status to 'done'. This defeats the purpose of the automatic review workflow.

## Requirements

1. When `set_task_status` is called with `status="done"`:
   - Check if the task has an approved review session
   - If no approved review exists, return an error with a clear message
   - The error should explain that a review must be approved first

2. The validation should:
   - Load the latest review session for the task
   - Check if its status is `Approved`
   - Only allow `done` if the review is approved

3. Edge cases to handle:
   - Task with no review sessions at all → block with message to start review
   - Task with review in progress → block with message to complete/approve review
   - Task with completed but not approved review → block with message to approve

## Expected behavior

```
# This should FAIL:
set_task_status(task_name="my-task", status="done")
# Error: "Cannot set status to 'done': No approved review found. Complete the code review first."

# This should SUCCEED (after review is approved):
approve_review(task_name="my-task", review_id="...")
set_task_status(task_name="my-task", status="done")
# Success: "Status updated to 'done'"
```