[Reland] Web Animations: Introduce String based KeyframeEffectModel

Note: This is a rework of issue 212023004

This patch refactors KeyframeEffectModel to support different types of
keyframe values. The common keyframe logic is retained in
KeyframeEffectModelBase to be inherited by the keyframe type specialisations.

KeyframeEffectModel is then templated on Keyframe type, with a hierarchy of Keyframes
including StringKeyframe and AnimatableValueKeyframe being introduced.

String based keyframes are being introduced to properly support the JS API
for Web Animations element.animate().

Original issue: https://codereview.chromium.org/215883005

TBR=rafaelw,dstockwell

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

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