Starlight: A C++ Object-Oriented Monte Carlo Event Generator For Ultra-Peripheral Collisions