DEPR: `Styler.set_na_rep` and `.set_precision` in favour of `.format(na_rep='x', precision=3)`
- [x] closes issue  #40032  and PR #40060 
- [x] deprecates the methods `Styler.set_na_rep()` and `Styler.set_precision()` in favour of, and incorporating `precision` into `Styler.format()`. Maintains some backwards compatibility with a deprecation warning, the copy mechanics remain broken.
    - [x] `Styler.set_na_rep('MISS')` is replaced and equivalent to `Styler.format(na_rep='MISS')`
    - [x]  `Styler.set_precision(5)` is replaced and equivalent to `Styler.format(precision=5)`
    - [x]  `Styler.set_na_rep('MISS').set_precision(5)` is equivalent to `Styler.format(na_rep='MISS', precision=5)`
    - [x]  `Styler.set_precision(5).set_na_rep('MISS')` is equivalent to `Styler.format(na_rep='MISS', precision=5)` 
- [x] moves the `default_formatter` and `maybe_wrap_formatter` methods to `module` level. 
- [x] documentation is added to show new functionality
- [x] most existing tests still pass with, some needed minor modification and some were no longer necessary
- [x] tests added for new combinations
- [x] whatsnew entry


This PR was suggested after review of #40060 as an alternative. It seems to be a simpler and more consistent solution for API.