Added PeriodToString, PeriodToNumber, and StringToPeriod Classes

see gh-21080

Comment From: philwebb

Thanks very much @Grubhart and @eddumelendez. I've managed to squeeze this into 2.3.0.

I have made some slight tweaks in commit 5ae623c43ad5d3be2e19135c38dbfd62e83abc92 to ensure that periods with more than one unit can be printed and parsed. I.e Period.of(1,2,3) will now print 1y2m3d and that value could be parsed again to give out back the same Period value.