For the purpose of getting this done for Blender 3.3 we are making a trade-off. Instead of having general curve deformation nodes, we have one node that just deforms the curves based on the surface object set in the properties editor. We intentionally don't expose inputs in the node, to make future versioning simpler. We do want to support generating hair and the surface in geometry nodes in the future, but not as part of this patch. This patch is concerned with making the common use case of having hair on some other mesh object work.
This patch adds the following things:
- A new Deform Curves on Surface node, which deforms curves with attachment information based on the surface object and uv map set in the properties panel.
- A new Add Rest Position checkbox in the shape keys panel.
- The Add > Curve > Empty Hair operator now sets up a simple geometry nodes setup that deforms the hair based on the surface. It also makes sure that the rest position attribute is added to the surface.
- A new Object (Attach Curves to Surface) operator is added to the Set Parent To (ctrl+P) menu, to attach existing curves to a new surface.
Notes:
- There is still a discontinuity between faces when faces are rotated (although that seems to exist in the old hair system as well). See todo comment in code.
- Crazy-space will be implemented separately.

