Refactor physics, particles and particle rendering

Implement a general-purpose PhysicsEngine which updates the states of PhysicsObjects. Particles are now managed by a ParticleCloud, which is rendered by a ParticleCloudRenderer.

Implement InputProvider interface to handle wiring different inputs to different aspects of the visualization.

Some rough edges here and there, but the basics are solid.