Fix/26837 format array
- [x] closes #26837
- [x] tests added / passed
- [x] Ensure all linting tests pass, see [here](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit) for how to run them
- [x] whatsnew entry

The basic strategy is to move `format_array` from pandas.io.formats.format to `ExtensionArray._format_array`. By default, we convert to ndarray and then use the existing formatting mechanism on the ndarray.
Can we use this to render unnecessary any of the other formatting-related methods out there?  in particular im thinking of 

- DTA/TDA/PA._format_native_types 
- DTI/TDI/PI._format_with_header (matches Index._format_with_header but with different na_rep and extra kwarg)
- IntervalIndex._format_native_types (matches Index._format_native_types but with different default value for na_rep)
- IntervalIndex._format_data (`# TODO: integrate with categorical and make generic`)
 I'm not sure, but it's not obvious to me. `_format_array` is designed to be generic. I would assume those are more specific and rely on some structure that can't be assumed in `_format_array`. This pull request is stale because it has been open for thirty days with no activity. Please update or respond to this comment if you're still interested in working on this. @TomAugspurger can you merge main Thanks for the PR, but it appears to have gone stale. Feel free to reopen when you have time to revisit. 