Now that this is automatically called by update_internal() based on a dirty flag, can we make this a protected/private function? That would break the API so maybe reserve it for a major version.
Maybe we can implement a local cache system for SurfaceMesh<> to reuse tmp buffers. Maybe this would make the add_vertex/add_facet functions efficient enough that we do not need to allocate them all at once in our triangulate_polygonal_facets function.