This commit replaces the temporary conversion to CurveEval with use
of the new curves data-block. The end result is that the process looks
more like the other components-- somewhere in between meshes and
point clouds in terms of complexity.
The final result is that the logic between meshes and curves is very similar.
There are a few different strategies to reduce duplication here, so I'll
investigate that separately.
There is some special behavior for the radius and handle position attributes.
I used the attribute API to store spans of these attributes temporarily.
Using access methods on CurvesGeometry would be reasonable to,
storing spans separately feels a bit more predictable for now though.
There should be significant performance improvements in some cases,
I haven't tested that specifically though.