This is useful when other modules want to register interpolators for d3.interpolate without adding an explicit dependency to d3.core. The interpolators are applied in reverse order, and the first one that returns a function is used. (This commit was authored by @jasondavies and cherry picked.)
Unlike Math.min and Math.max, it doesn't make sense to return negative or positive infinity for d3.min and d3.max; the D3 functions return the minimum value according to an arbitrary ordering, not by numeric value. Instead, the minimum or maximum of an empty array, or an array that contains only degenerate values, should always be undefined.