fix(setup): port-in-use prompt, subprocess timeouts, parse-time validation
- add an interactive port-in-use prompt with re-enter, proceed, and abort choices when doctor's port_5015_free advisory fires and --port was not supplied; non-interactive behavior is unchanged
- add subprocess timeouts: doctor at the 30s constant, install-models/skills/wrapper at --step-timeout-seconds defaulting to 1800; service install and service restart stay deliberately un-timed; timed run_inherited uses Popen with SIGTERM, 5s grace, then SIGKILL
- add parse-time validation: _journal_arg rejects empty, whitespace, and cwd-resolving values; _port_arg rejects values outside 1024-65535; validators are reused by argparse and the prompt loop
- add 8 tests in tests/test_setup.py; manifest schema is unchanged
Validation: make ci green (4531 passed, 8 skipped)
Co-Authored-By: Codex <codex@openai.com>