Geometry Nodes: Unify icons -> use ICON_NODETREE for everything
Until there is a icon made specially for this, the nodetree icon is up for grabs. Using it in the nodegroup + modifier + editor helps the users to make a connection on where to edit those modifiers.
Previously, GeometrySets and GeometryComponents has reference counters and could be shared. This commit changes it so that only GeometryComponents are shared. A GeometrySet is a fairly small type that is cheap to copy.
A lot of code simplifies when we can assume that GeometrySet is cheap to copy.
Geometry Nodes: Move GeometrySet classes to global namespace
Brecht and I decided to move the GeometrySet classes to the global namespace for now. This way we can use the same type in C and C++ and don't have to use reinterpret_cast as often.
Geometry Nodes: Improve node group output modifier error
More than output for the modifier's node group is fine, because the node group may be used in other situations, but the modifier will not work if there is no geometry output socket.
Geometry Nodes : Removing "Combine Strings" and Group Instance ID from UI
This diff remove "Combine Strings" and "Group Instance ID" nodes from the UI (but keep them in the source code to be able to bring them back if needed).
This introduces a regression. Users need to re-create their modifiers and set their values again. The NodeGroups are intact so all they need is to create new "Empty" modifiers and set the node group.
---
Original problem: Eventually most modifiers will be node-based, so naming this new modifier "Nodes" will get outdated pretty quickly.
Calling it "Empty" it's fairly descriptive, since the node tree simply connects the modifier Input to an Output, without any effect.
There is a potential problem, that it could be associated with the Empty object type. Like some sort of Hook.
This is the task T82700, and the design task T82537.