Fix some date conversions in sceRtc

On Windows especially, years like 9998 are not really supported.  This adjusts things to fit in a range it can handle, and then just offset the ticks/years afterward.  This may fix things on other platforms too.

Also adjusts some things in sceRtcCheckValid() to be more correct, and fixes sceRtcTickAddYears() to not even write when the date is invalid (matching tests.)

This may help Prince of Persia, but I don't have it to test.  At least it does match tests.  There are more things wrong here, I'm guessing sceRtcTickAddMonths() probably doesn't update dest on invalid either, but have not even looked at it.

-[Unknown]