### Godot version

4.0.0-beta-10

### System information

Windows 11

### Issue description

It appears that ImmediateMesh is always recalculating its own normals regardless of what is set.



### Steps to reproduce

1. Create MeshInstance3D node
2. Add [Tool] script and set mesh to ImmediateMesh
3. Use the following code in Process

```        
       if (Mesh is null)
            Mesh = new ImmediateMesh();

        if (Mesh is ImmediateMesh mesh)
        {
            mesh.ClearSurfaces();
            mesh.SurfaceBegin(Mesh.PrimitiveType.Triangles);

            mesh.SurfaceSetNormal(new Vector3(0, 1, 0));
            mesh.SurfaceAddVertex(new Vector3(-10, 10, -10f));
            mesh.SurfaceSetNormal(new Vector3(0, 1, 0));
            mesh.SurfaceAddVertex(new Vector3(10, 10, 10));
            mesh.SurfaceSetNormal(new Vector3(0, 1, 0));
            mesh.SurfaceAddVertex(new Vector3(-10, 10, 10));

            mesh.SurfaceSetNormal(new Vector3(0, 1, 0));
            mesh.SurfaceAddVertex(new Vector3(-10, 10, -10f));
            mesh.SurfaceSetNormal(new Vector3(0, 1, 0));
            mesh.SurfaceAddVertex(new Vector3(10, 10, -10));
            mesh.SurfaceSetNormal(new Vector3(0, 1, 0));
            mesh.SurfaceAddVertex(new Vector3(10, 10, 10));

            mesh.SurfaceEnd();
        }
```

You can either set the rendering for the scene to normals or you can get the array data and notice that the normals don't match what was set.

### Minimal reproduction project

.
ClassDB::bind_method(D_METHOD("surface_begin", "primitive", "material"), &ImmediateMesh::surface_begin, DEFVAL(Ref<Material>()));
	ClassDB::bind_method(D_METHOD("surface_set_color", "color"), &ImmediateMesh::surface_set_color);
	ClassDB::bind_method(D_METHOD("surface_set_normal", "normal"), &ImmediateMesh::surface_set_normal);
	ClassDB::bind_method(D_METHOD("surface_set_tangent", "tangent"), &ImmediateMesh::surface_set_tangent);
	ClassDB::bind_method(D_METHOD("surface_set_uv", "uv"), &ImmediateMesh::surface_set_uv);
	ClassDB::bind_method(D_METHOD("surface_set_uv2", "uv2"), &ImmediateMesh::surface_set_uv2);
	ClassDB::bind_method(D_METHOD("surface_add_vertex", "vertex"), &ImmediateMesh::surface_add_vertex);
	ClassDB::bind_method(D_METHOD("surface_add_vertex_2d", "vertex"), &ImmediateMesh::surface_add_vertex_2d);
	ClassDB::bind_method(D_METHOD("surface_end"), &ImmediateMesh::surface_end);
	ClassDB::bind_method(D_METHOD("clear_surfaces"), &ImmediateMesh::clear_surfaces);
}
RID ImmediateMesh::get_rid() const {
	return mesh;
}
ImmediateMesh::ImmediateMesh() {
	mesh = RS::get_singleton()->mesh_create();
}
ImmediateMesh::~ImmediateMesh() {
	ERR_FAIL_NULL(RenderingServer::get_singleton());
	RS::get_singleton()->free(mesh);
}