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.
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.

Also move memory allocation to python level, simplify cython routines
ENH: bsplines: add least-squares spline fitting *with fixed knots*