* After much consideration I consider this not a good change.
* It introduced a completely arbitrary mathematical relationship
among the units.
* This commit restores a precise relationship among the units which
is based on the Gregorian calendar.
* However this experiment has been preserved in the git history.
* The Gregorian average of months and years is an
integral number of seconds.
* This patch slightly tweaks the average to make it
not an integral number of seconds, and thus these
units no longer implicitly convert to seconds.
* This will flag naive mixing of years, months and seconds
as a compile time error.
to within the range of chrono::minutes.
* This prevents overflow when adding minutes to day_point
when minutes is stored in 32 bits.
* Also added static checks on the range of hours and seconds.
If these static checks fire, the range of year should be
further reduced.
* This does not impact gcc at all. It impacts clang only
when targeting 32 bit architectures. And it fixes
overflow on Visual Studio.
* Thanks much to https://github.com/gmcode for the herculean
effort in tracking this down.