Gunmen have burst into an illegal cockfight and opened fire, killing 20 people and wounding four, prosecutors in Mexico’s western state of Michoacan say.