Web Animations: Correctly handle animations with zero iteration duration and very large start delay

When calculating the time fraction when the iteration duration is zero and the
local time is less than the start delay, we use an effective local time of
'start delay -1', as suggested by the spec. This causes problems due to
rounding errors when the start delay is very large, which manifest themselves
when backwards fill is used. See bug for details.

This change avoids the problem by using the real local time in this case.

It also adds additional assertions to timingFromAnimationData() and the
animation sample() methods, to help pick up these kind of problems earlier.

It also adds a safety bail-out to
KeyframeAnimationEffect::PropertySpecificKeyframeGroup::sample() in the case
where the time fraction is null, as this can lead to buffer overflow.

BUG=324323
R=dstockwell

Review URL: https://codereview.chromium.org/96013002

git-svn-id: svn://svn.chromium.org/blink/trunk@162868 bbb929c8-8fbe-4397-9dbb-9b2b20218538