`GeometryCollectionArray::new` isn't externally usable because `MixedGeometryArray` is not public
Perhaps it's better here to take in GeometryArray as input and just validate that there's no internal/recurisve geometry collection provided. So it should be renamed to GeometryCollectionArray::try_new anyways, which then isn't breaking, and we should deprecate (and then make pub(crate) the new constructor)
This needs a little more thought because GeometryArray holds more than just one dimension. Do we take in a GeometryArray and then pick the dimension with data? What about an empty GeometryArray? Do we require a dimension too?
GeometryArray has a lot more internal array fields than the GeometryCollectionArray. Should we just copy the MixedGeometryArray constructor to GeometryCollectionArray?