Sends POST /v1/write/session with a Web3Signed Authorization header
whose signed claims carry grantId. The handshake proof is single-use on
the server; a transport retry signs a new one.
Throws
When the Personal Server refuses the handshake
(errorCode names why: UNREGISTERED_BUILDER, GRANT_REQUIRED,
GRANT_REVOKED, SCOPE_MISMATCH for a grant without write entries,
INVALID_SIGNATURE when the key is not the grantee,
GRANT_OWNER_MISMATCH, ...).
Open a write session against a Personal Server.