PERF: tz_convert/tz_convert_single
Making these follow the same pattern we use elsewhere, we get a perf bump:

```
In [2]: dti = pd.date_range("2016-01-01", periods=10000, tz="US/Pacific")        
In [3]: %timeit dti.tz_localize(None)                                                                                                                                                                              
91.4 µs ± 3.06 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)  # <-- PR
102 µs ± 6.43 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)  # <-- master

In [4]: ts = pd.Timestamp.now("US/Pacific")                                                                                                                                                                        
In [5]: %timeit ts.tz_localize(None)                                                                                                                                                                               
17.2 µs ± 307 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)   # <-- PR
19.6 µs ± 233 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)   # <-- PR
```

Next up is making sure we have full asv coverage for tz_convert/tz_convert_single, analogous to #35075.  That can either be separate or added to this PR.