Fix AnimationBase::fractionalTime() to handle a scale of infinity

When an animation is sampled at a fractionalTime of 1,
KeyframeAnimation::fetchIntervalEndpointsForProperty() selects the last
keyframe for both the 'previous' and 'next' keyframes to be used for blending.
This results in a scale of infinity and AnimationBase::fractionalTime()
resturns a value of -nan.

When -nan is passed to the default timing function, we hit the ASSERT() in
UnitBezier::solveCurveX(). If a linear timing function is used, the calculated
property value is -nan, and we hit the ASSERT() in the CSSPrimitiveValue
constructor.

This change fixes the problem by ignoring the scale in
AnimationBase::fractionalTime() in this case. This is safe because the
fractionalTime is always zero once the offset has been accounted for, so the
correct result is zero.

Note that this was originally landed in
https://codereview.chromium.org/23451031 but rolled out in
https://codereview.chromium.org/24079004 due to an assertion failure in
virtual/threaded/animations/fill-mode-forwards.html. This has now been fixed.

R=dstockwell

Review URL: https://chromiumcodereview.appspot.com/23815010

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