[#369] Only populate the quadtree once per frame, instead of when the collision.check function is called

also now uses the viewport as the visible world bound (that also fixes
the debug draw mode)