ENH: Enable .mode to sort with NA values
- [ ] closes #xxxx (Replace xxxx with the GitHub issue number)
- [ ] [Tests added and passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#writing-tests) if fixing a bug or adding a new feature
- [ ] All [code checks passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit).
- [ ] Added [type annotations](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#type-hints) to new arguments/methods/functions.
- [ ] Added an entry in the latest `doc/source/whatsnew/vX.X.X.rst` file if fixing a bug or adding a new feature.

We sort values in groupby with NAs using `safe_sort`, we can do the same for mode. This resolves an inconsistency between Python and PyArrow backed strings as PyArrow's mode can sort the NA values.

The other option here is to not sort the result in all cases. This would be my preference as users can sort the result if they like but they cannot unsort it. But it would be a breaking change.

cc @WillAyd @jorisvandenbossche @mroeschke 
lgtm as well. I see marked for 2.3 but should this not wait until 3?  This is fixing an inconsistency between str dtypes, which is why I think we'd want it in 2.3. I am comfortable calling this inconsistency a bug. Do you think it is too breaking of a change? Ah OK - that makes sense for 2.3 then. Can you take this out of draft mode? Owee, I'm MrMeeseeks, Look at me.

There seem to be a conflict, please backport manually. Here are approximate instructions:

1. Checkout backport branch and update it.

```
git checkout 2.3.x
git pull
```

2. Cherry pick the first parent branch of the this PR on top of the older branch:
```
git cherry-pick -x -m1 1708e9020c418e91fae430cf6a7a6ec09c466429
```

3. You will likely have some merge/cherry-pick conflict here, fix them and commit:

```
git commit -am 'Backport PR #60702: ENH: Enable .mode to sort with NA values'
```

4. Push to a named branch:

```
git push YOURFORK 2.3.x:auto-backport-of-pr-60702-on-2.3.x
```

5. Create a PR against branch 2.3.x, I would have named this PR:

> "Backport PR #60702 on branch 2.3.x (ENH: Enable .mode to sort with NA values)"

And apply the correct labels and milestones.

Congratulations — you did some good work! Hopefully your backport PR will be tested by the continuous integration and merged soon!

Remember to remove the `Still Needs Manual Backport` label once the PR gets merged.

If these instructions are inaccurate, feel free to [suggest an improvement](https://github.com/MeeseeksBox/MeeseeksDev).
                 I put it in draft mode because it wasn't ready to merge - needs a what's new. No worries at all here, can do a followup, but just as a general ways of working can I request not having others take my PRs out of draft. Sure no problem Manual backport -> https://github.com/pandas-dev/pandas/pull/60754