2D Bounding Spheres

For #1539. This also fixes #1248.

Uses the xz plane as a splitting plane when geometry intersects the IDL creating multiply geometries in the east and west hemispheres with better fitting bounding spheres. Also uses the projected points to compute the bounding sphere instead of `BoundingSphere.projectTo2D`.

This also partially fixes #1552. Frustum culling is now correct in Columbus view and 2D. However, in 2D, the geometry is failing the depth test.
Instead of having these branches everywhere, should the functions instead just take the `instance` and then handle the logic?