Contact cleanup reliability when changing physics engines in Gazebo 11
Goal: verify that contact memory created during short‑lived collisions is released when a model is spawned and then removed through Gazebo’s world/model lifecycle interface, independent of how the model was added. Constraints: Gazebo forwards collision detection to interchangeable physics engines (ODE, Bullet, DART, Simbody), so ownership of contact objects