Add private segment-wise splitting routines to piecewise curve.

The outside-facing interface of piecewise curves restricts access to the
parameter t.  However, internally, algorithms can work on a particular
segment.

This change introduces private split_seg methods to split a given
segment at a specified (segment-wise) parameter.  If no parameter is
specified, the segment is bisected.  A further version is introduced
that returns an iterator to the newly added segment.

The existing split routine is refactored to use split_seg.
A minimum/maximum degree method is added to piecewise curves.

Analogous to bezier.degree(), this routine returns the maximum and minimum
degree of any segment in a piecewise curve.
Add adaptive to_cubic converter for piecewise curves.

This routine converts each segment of a piecewise bezier curve to a cubic
bezier with the same parameterization.  Each segment is adaptively
bisected as required to ensure the maximum distance between the exact
and cubic curves is less than the specified tolerance.

Numerous tests are introduced.  Degenerate cases (where the order of the
input curve is <= 3) result in an exact cubic with no subdivision.
Single-segment and multi-segment piecewise curves are tested.
Approximation of high order curves is tested.  A cubic curve promoted to
high order returns an exact cubic with no subdivision.