Make piecewise::degree const method
Implement min_dist_curve for piecewise curves with no initial guess.

This uses a bounding box search on curve segments to reduce the number
of curves that must be checked with more rigorous methods.
Matrix inf norm was calculated wrong.

Old code took the abs of the maximum entry -- it should take the maximum
of the abs entries.

Eigen has a direct way of doing this, but it threw an error I could not
resolve, so I made a note and implemented something that works.
Fix broken tests uncovered by fixing Newton's method norm.

The sign of the u_contra and v_contra terms produced a point just above
the surface rather than beyond the surface.  Consequently, it was not
a proper geometric construction of a known nearest point off the surface.
Instead, the solution to the specified point was somewhat inside the
field.

In addition, the Newton's method norm fix makes a case that only failed
for float types work.  Consequently, we can remove the special case
handling of the floating point value.
Add lots of surface minimum_distance tests.
Don't be so picky about improved answers in surface minimum distance.

Cases that Newton's method flagged as hitting the constraint could still
have significant improvement -- possibly even convergence.  These cases
were being thrown out because they didn't have the right exit flag.

Change minimum_distance to not care about the exit flag.  If the solution
is within the bounds and shows improvement, then return it.
Don't limit all dimensions of change vector when constraint is hit.

Before, if the point was on a constraint and the change vector pointed in
the general direction of the constraint, the change vector would be zeroed
out.

Instead, just zero the components that point into the constraint, thereby
allowing the point to slide along the constraint.
Minimum_distance surface solver tends to converge to a nearby point when constrained

There is apparently a more attractive local minimum near the exact solution
when the minimum distance problem is up against a constraint.  Given a
wide variety of starting points, the solver converges to this local minimum
rather than the exact solution.

This changes the test cases to find that nearby local solution and then
verify that a wide variety of starting points converge to the same point.
Add lots of tests to surface minimum_distance for periodic surfaces.

Since this test surface is a wavy cylinder, it provides lots of
opportunities for Newton's method to find local maxima or saddle points
instead of the minimum distance.

Consequently, the offset was tightened up to 0.1, and cases that were
verified to seek unfortunate extrema were culled.