Swith to using new Nondegenerate type instead of 'sampler' pattern
Swith to using new Nondegenerate type instead of 'sampler' pattern

- More straightforward, precise API
- Similar to ArcLengthParameterized
- Nondegenerate value is pure data, unlike function returned by 'sampler'

Also rename 'underlyingSpline' to 'fromArcLengthParameterized' since otherwise it would be ambiguous.

opensolid/geometry