Mechanism and kinetics of pseudomorphic mineral replacement reactions: A case study of the replacement of pentlandite by violarite