Encrypt keyring and grant metadata with AES-256-GCM
Apply the same encrypted metadata pattern from documents (#187) to
keyrings and grants. All advisory metadata (name, description on
keyrings; permissions, note on grants) is now encrypted client-side
and stored in an `encryptedMetadata` envelope. Plaintext fields are
removed entirely from lexicons, record structs, DB schema, and API
responses.
- Generic encrypt_metadata/decrypt_metadata over Serialize/DeserializeOwned
- KeyringMetadata encrypted with group key, GrantMetadata with content key
- encryptedMetadata is required on both record types
- remove_member re-encrypts metadata after key rotation
- WASM exports for keyring/grant metadata encrypt/decrypt
- AppView no longer stores or serves plaintext metadata fields
Closes #188