### 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

.
ERR_FAIL_COND_MSG(!surface_active, "Not creating any surface. Use surface_begin() to do it.");
	ERR_FAIL_COND_MSG(vertices.size() && !active_surface_data.vertex_2d, "Can't mix 2D and 3D vertices in a surface.");
	if (uses_colors) {
		colors.push_back(current_color);
	}
	if (uses_normals) {
		normals.push_back(current_normal);
	}
	if (uses_tangents) {
		tangents.push_back(current_tangent);
	}
	if (uses_uvs) {
		uvs.push_back(current_uv);
	}
	if (uses_uv2s) {
		uv2s.push_back(current_uv2);
	}
	Vector3 v(p_vertex.x, p_vertex.y, 0);
	vertices.push_back(v);
	active_surface_data.vertex_2d = true;
}
void ImmediateMesh::surface_end() {