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.