This commit exposes left and right bezier handles as an attribute.
Interaction basically works like edit mode, where if you move an
aligned handle, it also moves the opposite handle of the control point.
The difference is that you can't edit "Auto" or "Vector" handles,
you have to first use the "Set Handle Type" node. I think that is
more intuitive, since it gives the handle types a bit more meaning
in the node tree-- changing them in edit mode is more like a "UI override".
The attributes are named handle_start and handle_end,
which is the same name used in the curve RNA API.
As is tradition at this point, there is a new virtual array implementation,
which handles the case of splines that don't have these attributes,
but it also calls two new functions on BezierSpline to set the
handle position and account for aligned handles, etc.
The virtual arrays and attribute providers will be refactored
(probably templated) in the future, as a next step after the last built-in
curve attribute provider has landed.
