MAINT: interpolate: move pchip to _monotone.py
MAINT: interpolate: reimplement pchip to use BPoly

The algorithm itself is intact.
STY: remove code duplication, rename pchip.p to pchip.bpoly
API: make pchip.derivative match PPoly.derivative

Previously, pchip.derivative used to return a value of f'(x)
at a fixed `x`. Now this can be achieved with pchip.__call__,
and pchip.derivative() returns a callable object, representing
the derivative. See gh-3267 for discussion.
ENH: add roots() method to the pchip interpolator.
MAINT: underscore the _bpoly attribute of pchip
TST: add tests for PCHIP

Make sure the interpolator (i) preserves monotonicity, and
(ii) does not overshoot
Merge pull request #3267 from ev-br/pchip_

ENH: interpolate: reimplement pchip interpolator

Convert pchip interpolator into a wrapper around BPoly. The interpolation
algorithm is the same as previously, but evaluation is done via the new
piecewise polynomial functionality.