Improve collision handling

* add dedicated collision class
* add collidable interface