I think it would be nice to have more consistent out-of-bounds behaviour. In other functions, we have a `bounds_error=True|False` kwarg and a `fill_value=` kwarg. You could reach your current `ext` behaviour like this:

- `ext=0` -> `bounds_error=False, fill_value=None` (it's this way in other interpolate functions)
- `ext=1` -> `bounds_error=False, fill_value=0.`
- `ext=2` -> `bounds_error=True`
- `ext=3` -> `bounds_error=False, fill_value='boundary'`

The last one is not so nice because it means you cannot use `if fill_value: ` and more, but I cannot think of a more elegant way to support all four cases using this two-kwarg semantics