PERF: Timestamp construction with tz and string offset
```
import pandas as pd

dtstr = "2016-01-01 02:03:04-07:00"
tz = "US/Pacific"

%timeit pd.Timestamp(dtstr, tz=tz)
31.6 µs ± 318 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)  # <- branch
33.5 µs ± 196 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)  # <- main
```

Small bump from avoiding some object creation.  The underlying motivation is moving towards aligning/de-duplicating the code we use in the several places that we use string_to_dts.
Thanks @jbrockmendel 