Give Scene::create_light_node<> a symbol that does not depend on inlining.

intern/cycles/blender/geometry.cpp and intern/cycles/blender/light.cpp call
Scene::create_light_node<T>() for the five light types.  Those are separate
translation units, where only the declaration in scene/scene.h is visible, so
the compiler emits an external reference.  The definition lives in
scene/scene.cpp and is never instantiated explicitly -- it is only instantiated
implicitly, by the create_node<> specializations right below it.

That happens to link only while the compiler leaves the implicit instantiation
behind as a COMDAT symbol.  With gcc 16.2.0 the helper is small enough that -O3
inlines it into all five specializations and then prunes the out-of-line body,
so scene.cpp.o exports nothing and the final link fails with five undefined
symbols.  Measured on 5.2.1, symbols present in scene.cpp.o:

    -O1: 5    -O2: 5    -Os: 5    -O3: 0

The linker is not involved: bfd, mold and lld all fail identically once the
symbol is absent from every object file.  Reported downstream against mold only
because that is what the reporter happened to be using.

Bug: https://github.com/obentoo/bentoo/issues/45
--- a/intern/cycles/scene/scene.cpp
+++ b/intern/cycles/scene/scene.cpp
@@ -874,6 +874,17 @@
   return node_ptr;
 }
 
+/* Explicit instantiation. intern/cycles/blender/{geometry,light}.cpp call this
+ * template from another translation unit, where only the declaration in scene.h
+ * is visible. The implicit instantiations below are not a substitute: at -O3 GCC
+ * inlines them into the create_node<> specializations and emits no symbol at
+ * all, so the final link fails with five undefined create_light_node<>. */
+template PointLight *Scene::create_light_node<PointLight>();
+template SpotLight *Scene::create_light_node<SpotLight>();
+template AreaLight *Scene::create_light_node<AreaLight>();
+template SunLight *Scene::create_light_node<SunLight>();
+template BackgroundLight *Scene::create_light_node<BackgroundLight>();
+
 template<> PointLight *Scene::create_node<PointLight>()
 {
   return create_light_node<PointLight>();
