ENH: interpolate: rewrite ppform evaluation in Cython

This PR replaces the piecewise polynomial evaluation algorithm, which was O(N^2) in memory usage and time with one with a O(N) memory usage and O(N log N) in time with O(N) best case.

I also attempt to correct API defects in `ppform` by defining a new piecewise polynomial class `PPoly` --- non-pep8 naming, and incompatible spline convention in `fromspline`, `fill` keyword name instead of `fill_value`.

NB: this is still work in progress, with the following missing:

- derivatives (numerical values and derivative polynomials)
- comparison to `PiecewisePolynomial` (i.e. what worthwhile features are missing)

The long-term plan would be to deprecate both `ppform` and `PiecewisePolynomial` with a faster and better designed alternative.

This may be of interest to @EvgeniBurovski (though the improved `fill_value` handling is missing --- but it can be bolted on later) and @andreas-h (for Akima interpolation).