Construct a piecewise polynomial
Parameters :  xi : arraylike of length N
yi : list of lists of length N
orders : list of integers, or integer
direction : {None, 1, 1}


Notes
If orders is None, or orders[i] is None, then the degree of the polynomial segment is exactly the degree required to match all i available derivatives at both endpoints. If orders[i] is not None, then some derivatives will be ignored. The code will try to use an equal number of derivatives from each end; if the total number of derivatives needed is odd, it will prefer the rightmost endpoint. If not enough derivatives are available, an exception is raised.