Adds gap-based Euclidean distance clustering of /scan LaserScan points. Each cluster is published as a labelled semi-transparent CUBE + TEXT marker in /saltybot/lidar_clusters (MarkerArray), sorted nearest-first. Stale markers from shrinking cluster counts are explicitly deleted each cycle. 22/22 pure-Python tests pass (no ROS2 required). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>