CI / test (pull_request) Failing after 3h13m39s
Add Resolver interface, BasicResolver, and CachingResolver to internal/dns. CachingResolver wraps any Resolver with an in-memory cache keyed by (server IP, name, type, class). Cache entries respect DNS TTL from responses, falling back to a configurable default TTL. Thread-safe using sync.RWMutex. Includes Len, Clear, and PurgeExpired methods for cache management. Closes HAN-379 (Phase 2.2). Co-authored-by: multica-agent <github@multica.ai>