ENH: interpolate: add __slots__ and a fast constructor to PPoly

Also add a sorting check to the constructor.  The fast constructor is roughly
20x faster than the default one:

In [1]: import numpy as np
In [2]: c = np.array([[1, 4], [2, 5], [3, 6]])
In [3]: x = np.array([0, 0.5, 1])
In [4]: from scipy.interpolate import PPoly
In [5]: %timeit PPoly(c, x)
10000 loops, best of 3: 20 us per loop
In [6]: %timeit PPoly.construct_fast(c, x)
1000000 loops, best of 3: 1.26 us per loop