So I know Kenn won't love this, which is why it isn't up for a pull request yet :). I've done some work on the path planner that I think is positive and makes the code a lot simpler to work with which I'd like to advocate for now.
Changes:
1. Curved paths are defined by a start and end position, a left or right curve, and a radius. The end is the true end instead of a circle. Here is an example of flying a box path with clockwise and counterclockwise segments. Obviously this is a shitty path for a plane :)

2. To make sure that following these curves never has singularities in the mapping from position to desired velocity it is constrained to curves of less than 180 degrees. There is a separate mode for flying a circle continuously.
3. Removed the PathAction object and updated the GCS to work with this. The obvious consequence of this is we no longer have jumps, error paths, etc. As I've said previously for now at least I'd _really_ rather work with a simple planner while making the follower work really well.
4. The path planner is now super super simple. It just looks at the path status for completed and when that happens advances to the next waypoint. When a waypoint is active PathDesired simply gets the values from that waypoint with the additional logic that the start position is the previous waypoint (or in the case of the first waypoint the current position) and the starting velocity is the previous waypoint velocity.
5. paths.c takes in the PathDesired object to specify the desired path. This is the first step of moving any logic for the path desired from the follower if we want to move towards using Feret-Serret representations.
6. I documented the shit out of the GCS path planning code to try and tempt Kenn :)
7. Moved the calculation of the LLA positions of waypoints in the uavomodelproxy instead of the map gadget so that the pathplanner gadget can work standalone.
If there is support for this I want to move the widget for editing waypoints into a standalone plugin and gadget, and then it can also pop up when requested from the map. That way you can also do what the old waypoint editor does and highlight the currently active waypoint while flying.