arena: cool per-handle specColor + 'specs' HUD label
Spectator/guest visuals now use a deterministic cool-palette per handle
instead of flat gray — hue range is constrained to 170°–319° (cyan,
blue, violet, pink) at moderate saturation and high lightness, so anon
watchers read as ghostly/icy and are still individually distinguishable.
Refactor: extracted handleHash() + hslToRgb() so handleColor (full hue
spectrum, vivid) and specColor (cool half, ghostly) can share the same
math.
HUD: rename the 'watchers' line to 'specs' (short for spectators).
Minimap dots for specs are now 2×2 in their own cool color instead of
1×1 flat gray.