Added RetimeTrajectory function that fall backs on linear smoothing.

Changed RetimeTrajectory to first attempt ParabolicRetimer, and fall back on LinearTrajectoryRetimer if that fails.

This is because ParabolicRetimer can fail in certain situations because it smooths the original trajectory slightly.  LinearTrajectoryRetimer will always work, but produces a trajectory that must stop at each waypoint.
The trajectory could be left in an inconsistent state if ParabolicSmoother` fails. We should copy the trajectory before smoothing.