This patch implements the initial core framework for fields and anonymous attributes as described on [[ https://devtalk.blender.org/t/fields-and-anonymous-attributes-proposal/19450 | devtalk ]].
It was been developed by Hans and me.
The two core components of this patch allow the following:
* Building and evaluating fields at run-time (`FN_fields.hh`).
* Creating and accessing anonymous attributes on geometry (`BKE_anonymous_attribute.h`).
For evaluating fields we use a new so called multi-function procedure (FN_multi_function_procedure.hh`). It allows composing multi-functions in arbitrary ways and supports efficient evaluation as is required by fields. See `FN_multi_function_procedure_test.cc` for more details on how this evaluation mechanism can be used.
A new `AttributeIDRef` has been added which allows handling named and anonymous attributes in the same way in many places.
On the user level, the following has changed:
* New `Position` node.
* New `Index` node.
* New `Normal` node.
* New `Set Position` node.
* New `Attribute Capture` node (same as `Attribute Freeze` in the prototype).
* Added support for fields in the `Point Translate` node.
* Socket inspection for fields is not yet working.