Add rounding support for `Periods` (#24182)
* Add rounding for Periods
* Improve period rounding function type signatures
* Use promote instead of Nanosecond to round periods
Period rounding functions no longer unnecessarily convert all values to
nanoseconds prior to rounding.
* Minor refactoring for period rounding