BUG: Fix float formatting when a string is passed as float_format arg
closes #21625
closes #22270.

If a string `float_format` argument is passed by the user to `to_string`, `to_latex`, `to_html`, etc, then disable fixed width, so that now e.g.
```python
df.to_string(float_format='%.3f')
```
will give the same result as 
```python
df.to_string(float_format=lambda x: '%.3f' % x)
```

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