BUG: fix convert_dtypes to handle empty df
Added a conditional to check a DataFrame had at least one column and if not return the original (empty) DataFrame if so.

- [x] closes #40393
- [x] tests added / passed
- [x] Ensure all linting tests pass, see [here](https://pandas.pydata.org/pandas-docs/dev/development/contributing.html#code-standards) for how to run them
- [x] whatsnew entry

Thanks @jorisvandenbossche

All good call outs (particularly the test in the wrong place - I should've noticed that). I hope it looks better now.  Thanks for the feedback @rhshadrach I'm still not sure I've got the assert written the way you'd like - didn't know whether to compare the DataFrame to itself or to a new empty DataFrame. Please let me know if you'd like anything else updated. Thanks a lot @owenlamont for your first contribution! Thank you! I'm honoured to contribute to such a foundational part of the PyData ecosystem. First of many hopefully.