Kinetic Monte Carlo simulations of surface reactions on supported nanoparticles: A novel approach and computer code.