Sparse Feature Coactivation Reveals Causal Semantic Modules in Large Language Models