Replace the ping-command-only implementation with a three-tier
approach using golang.org/x/net/icmp:
1. Raw socket (ip4:icmp) — works with root or CAP_NET_RAW
2. Unprivileged datagram socket (udp4) — works on Linux/macOS
without special privileges
3. System ping command — fallback when neither socket works
The method is auto-detected on first probe and cached for all
subsequent calls, avoiding repeated failed attempts.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Implements the core probe execution engine (ProbeManager) that runs
network probes on configurable intervals, collects latency samples,
and aggregates results over a 60s sliding window. Adds two new
WebSocket handlers (SyncNetworkProbes, GetNetworkProbeResults) for
hub-agent communication and integrates probe lifecycle into the agent.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>