ENH: interpolate: BSpline

Add a base class BSpline, and a low-level cython routines
for evaluating b-spline functions. This class only evaluates
b-splines and does not do any fitting. Representation is
compatible with FITPACK.
ENH: interpolate: interpolating BSplines

Add a routine for constructing an interpolating spline
given data. Accepts knots for interpolation. If not supplied,
selects knots automatically. Handles fixed values of derivatives
at boundaries. All linear algebra is banded, so that memory
footprint should be reasonable.
DEP: interpolate: deprecate splmake and friends

Use make_interp_spline and BSpline in interp1d instead.
MAINT: bsplines: reuse _deBoor_D from __fitpack

This improves performance over a homemade evalution routine, making
it comparable to fitpack in performance.
Also use a simpler linear search, which gives some more raw speed.
BUG: fitpack: avoid a memory error in splev(x, tck, der=k)

for x < t[0], splev(..., der=k) produces garbage or crashes
because of a memory error.
TST: bsplines: stop special casing tests for splev(..., der=k)

This is no longer needed once the relevant memory error is fixed.
MAINT: bsplines: use lapack banded solver instead of solve_banded

This is to reduce the memory footprint: solve_banded needs to make
a copy of the lhs matrix internally, but here we can directly construct
the collocation matrix in the LAPACK banded storage format.