refactor: drop hello from garden client, allow boruta channel join
Garden client no longer sends garden:hello over websocket. After HTTP
registration it joins the private channel directly with stored
garden_sid.
Server channel join now dispatches on access_token type: boruta-
authenticated gardens are authorized by matching garden_id from the
OAuth context, while legacy registration-token gardens still use
local_sid matching.
sow-149
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>