Finish moving period_helper to cython
- [x] closes #19465

There is probably some cleanup that can be done now that period logic is self-contained.

No evident perf impact.
```
asv continuous -E virtualenv -f 1.1 master HEAD -b period
[...]
       before           after         ratio
     [776fed3a]       [7cc0d9e8]
+        1.14±0μs      1.28±0.01μs     1.13  period.PeriodProperties.time_property('M', 'qyear')
-        579±30ms          509±4ms     0.88  groupby.Datelike.time_sum('period_range')
```

(will post results from a couple more runs as they become available)
<b> update<b/> two more runs show zero change, not even noise.

<b>update</b> Oh, also did some unrelated modernizing of string formatting in timedeltas.