Quad tree for collision detection

* Quad tree for efficient collision detection
* Shape class for extendable collision detection
Does ` getCollisionPairs()` need to be exposed? It seems to just be there for the quadtree demo.  Can this demo not just hack the `update()` function to be the function to do the comparison between the quadtree and non-quadtree?