Encrypt all document metadata with AES-256-GCM
Document metadata (name, mimeType, size, tags, description) is now
always encrypted using the same content key as the blob. Plaintext
record fields are set to dummy values; real metadata lives exclusively
in the mandatory encryptedMetadata field.
- Add encryptedMetadata type to lexicon defs, required on document
- Add crypto/metadata module: DocumentMetadata, encrypt/decrypt
- Add metadata/ module in core: read (fetch+decrypt), write (mutate+reencrypt+put)
- Upload always encrypts metadata, tags param removed, description added
- All download paths decrypt metadata for filename resolution
- CLI ls/tree decrypt metadata for display via shared document_resolve
- CLI download/rm use document_resolve for name-based lookups
- Rename mv command to move (move-only, rename deferred to #190)
- Add WASM encryptMetadata/decryptMetadata exports
- Add AtBytes::from_raw constructor