- Add StatusTimeout constant for timeout responses
- querySingleType now retries on timeout and SERVFAIL (3 attempts,
exponential backoff starting at 100ms)
- NXDOMAIN and NOERROR+empty are treated as authoritative negatives
with no retry
- classifyResponse sets structured error messages for timeout and
SERVFAIL cases
- Refactored into smaller functions to satisfy cyclomatic complexity
limits