This commit changes CurveComponent to store the new curve
type by adding conversions to and from CurveEval in most nodes.
This will temporarily make performance of curves in geometry nodes
much worse, but as functionality is implemented for the new type
and it is used in more places, performance will become better than before.
We still use CurveEval for drawing curves, because the new Curves
data-block has no evaluated points yet. So the Curve ID is still generated
for rendering in the same way as before. It's also still needed for drawing
curve object edit mode overlays.
The old curve component isn't removed yet, because it is still used to
provide the attribute API used to implement the conversions back and
forth.
A few more attributes are added to make this possible:
- nurbs_weight: The weight for each control point on NURBS curves (D12004)
- nurbs_order: The order of the NURBS curve
- knots_mode: This is less defined at the moment, but still necessary for conversion.
- handle_type_{left/right}: An 8 bit integer attribute.
