Quad tree for collision detection

* Quad tree for efficient collision detection
* Shape class for extendable collision detection
Why can it be undefined? Didn't there used to be a mechanism to keep a list of current collision pairs? `entities.create()` and `entities.destroy()` would edit this list if necessary to avoid the problem that the comment describes.