Quad tree for collision detection

* Quad tree for efficient collision detection
* Shape class for extendable collision detection
This could be returned as an object for greater readability: 
`{ size: { x: width, y: height }, center: { x: minx + width/2, y: miny + height/2 }}`