Vectorized ISO Format
- [ ] closes #28180
- [ ] tests added / passed
- [ ] passes `black pandas`
- [ ] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

Needs work but could certainly use some guidance from @jbrockmendel 

This uses the dt -> ISO string formatting that is deeply nested in the JSON code. It doesn't handle time zones properly (see #12997), doesn't match what you would get by default from `Timestamp.isoformat` (different precision) and doesn't support Timedeltas yet. When Timedeltas are supported this could ease some of the performance issues @cbertinato is seeing in #28595

In any case looking for guidance and thoughts on how to properly implement this, if this is even in the right direction

Here's a rough benchmark on performance:

```ipython
