ML-KEM shares a non-trivial amount of structure with ML-DSA. As I was writing the ML-DSA implementation in the signatures crate, I pulled out a module_lattice module that attempts to capture that common structure. What remains is to have the ml_kem crate use the same structure for its core algebra and encoding routines, and to pull the module_lattice module out into a separate crate.