crypto.ocaml: cache round keys, fail explicitly on AES decrypt
- Cache parsed Int32 round key array to avoid allocation per block
- AES.dec raises instead of silently using encrypt (wrong for CBC)
- GHASH documented as not constant-time
TODO: use Eqaf for tag comparison, add constant-time GHASH table lookup