Extract three helpers from the 108-line dispatch_task() function:
- _validate_task() — precondition checks (title required)
- _select_dispatch_strategy() — decides gitea vs api vs local
- _log_dispatch_result() — logging for failed attempts
Main dispatch_task() now orchestrates: validate → resolve → select strategy → dispatch → log/escalate.
Fixes#1137