Under the hood the CurveProfile widget (currently used for bevel custom profiles) has a bezier curve. In master right now though it only supports two of the bezier curve handle types, vector and auto. This patch adds support for free handles and adds all of the logic for editing them.
This is the first step to the ability to import and export curve objects in the widget.
There's some code cleanup in curveprofile.c. Movement for handles and control points is abstracted to functions there rather than happening in interface_handlers.c.
Along with that there's an "Apply Preset" button which solves a confusing issue where you apply a preset, then change the number of samples and the preset doesn't change. The button makes it clear that the preset needs to be reapplied.