security: harden garden socket auth
- Move auth token from URL query param to x-auth-token header (sow-147)
Server accepts both header and query param for backward compat.
Garden client now sends via header only.
- Remove longpoll transport from garden socket (sow-144)
- Use Base.decode64 instead of decode64! for untrusted tokens (sow-145)
- Use exact scope matching instead of String.contains? (sow-146)
sow-144, sow-145, sow-146, sow-147
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>