Interface CubicSpline

Cubic splines.
Cubic splines are similar to line strings in that they are a sequence of segments each with
its own defining function. A cubic spline uses the control points and a set of derivative
parameters to define a piecewise 3rd degree polynomial interpolation. Unlike line-strings,
the parameterization by arc length is not necessarily still a polynomial. Splines have two
parameterizations that are used in this specification, the defining one (constructive
parameter) and the one that has been reparameterized by arc length to satisfy the requirements
in GenericCurve.

The function describing the curve must be C2, that is, have a continuous
1st and 2nd derivative at all points, and pass through the
control points in the order given. Between the control points,
the curve segment is defined by a cubic polynomial. At each control point, the polynomial
changes in such a manner that the 1st and 2nd derivative vectors are
the same from either side. The control parameters record must contain
vectorAtStart, and vectorAtEnd
which are the unit tangent vectors at controlPoint[0] and controlPoint[n]
where n = controlPoint.length-1.