ENH GH20601 raise error when pivot table's number of levels > int32
Because the error of number of levels exceeding int32 can happen both in `pivot_table` and `unstack`, I catch the error as early as possible in both places.

Arguments for and against catching the error in `pivot_table`:
- For: `pivot_table` does aggregation before calling `unstack`, so it takes a while before the error is raised
- Against: `pivot_table` ultimately calls `unstack`, so it's not worth it to check for the error in both places

I'm happy to go with either way as you prefer.

- [X ] closes #20601
- [X ] tests added / passed
- [X ] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [X ] whatsnew entry
