Rework ContactListener logic

* Introduce Collideable interface for objects that want to detect
  collisions.
* Make new "physics" package