Add spline module.
Return 1-D ndarray from call to spline basis.

There is no need to return a 2-D ndarray with shape (len, 1) that
mimics a column vector as dot() will correctly transpose it if
needed.
Use list comprehension for call to spline basis.
Make copy of knots given to spline basis.
Fix copy of knots in spline basis.
Drop _dim data attribute in spline basis.
Rename spline classes to stress they are cubic.
Drop 4th derivative from spline call.

The 4th derivative is zero everywhere except at the various knots
where it is infinity.
Add steps generator as module helper function.
Do not make copy of knots given to spline basis.

This is a reversal of an ealier commit.  We now assume the caller
knows what he is doing and will not corrupt the data.  This is done
for performance and efficiency.
Make steps optional for interpolating spline.
Remove extra ndarray allocations in spline basis.