Previously, external textures were modelled in the macOS embedder by a top-level FlutterMacOSExternalTexture protocol with a single textureID getter, and two implementations: FlutterExternalTextureGL and FlutterExternalTextureMetal. With the removal of OpenGL support from the macOS embedder, the only remaining external texture implementation is Metal. This patch squashes this set of types into a single FlutterExternalTexture class. Issue: https://github.com/flutter/flutter/issues/108304 Issue: https://github.com/flutter/flutter/issues/114445