[ENH] Add "fullmatch" matching mode to Series.str [#32806]
- [X] closes #32806
- [X] tests added / passed
- [X] passes `black pandas`
- [X] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [X] whatsnew entry

This is my first PR against this project, so apologies if I've missed any steps in the process. I'm assuming that I'm supposed to fill in the checklist above myself.

This pull request adds the `fullmatch` regular expression matching mode to the other modes already present under the `Series.str` namespace. For example:

```python
>>> s = pd.Series(["foo", "bar", "foobar"])
>>> s.str.fullmatch("foo")
0     True
1    False
2    False
dtype: bool
```

The `fullmatch` matching mode restricts matches to those that only match the *entire* string. Note the differences from `match`:
```python
>>> s = pd.Series(["foo", "bar", "foobar"])
>>> s.str.fullmatch("foo")
0     True
1    False
2    False
dtype: bool
>>> s.str.match("foo")
0     True
1    False
2     True
dtype: bool
```

I've also added regression tests and a "what's new" entry.

I have also opened issue #32806 to cover this new feature.
I'm currently rerunning CI tests locally after fixing that linter error. Sorry about that; I didn't know that `black` doesn't reorder imports for you. Can you merge master one more time? Should resolve CI failure Merged in changes from master; waiting for the next batch of CI results to come back. Pushed some changes late last night that should address the remaining issues. thanks @frreiss very nice!