Change IntervalTimer::Reset() behavior to handle system clock changes forward and backward. This fixes IntervalTimer:.Passed() returning true till it catches up to the new time, triggering the event up to "std::numeric_limits<time_t>::max() / _interval" times. Fixes https://github.com/TrinityCore/TrinityCore/issues/5816