ENH: Refactor if-else with structural pattern matching (Python3.10)
#### Describe the solution you'd like

Have there been any discussions on refactoring `if-else-isinstance` checks with the new `match-case` syntax (*pattern matching*)?
It looks very useful, even if purely used as a `switch-case` stand in.

This should simplify typechecks, of which there are quite a few in the codebase.
#### API breaking implications

Should not have any impact, as purely an internal refactor.

#### Additional context

Sample example of refactor—`between()`, taken from `series.py`:

Current:
```python
if inclusive == "both":
    lmask = self >= left
    rmask = self <= right
elif inclusive == "left":
    lmask = self >= left
    rmask = self < right
elif inclusive == "right":
    lmask = self > left
    rmask = self <= right
elif inclusive == "neither":
    lmask = self > left
    rmask = self < right
else:
    raise ValueError(
        "Inclusive has to be either string of 'both',"
        "'left', 'right', or 'neither'."
    )
```

Refactored (*poorly, probably*):
```python
match inclusive:
    case "both":
        lmask = self >= left
        rmask = self <= right
    case "left":
        lmask = self >= left
        rmask = self < right
    case "right":
        lmask = self > left
        rmask = self <= right
    case "neither":
        lmask = self > left
        rmask = self < right
    case _:
        raise ValueError(
            "Inclusive has to be either string of 'both',"
            "'left', 'right', or 'neither'."
        )
```