Efficient Data-Structures and Algorithms for a Coloured Petri Nets Simulator