[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

Please note that this version includes the Oilpan changes made in
https://codereview.chromium.org/222893005/

TBR=dstockwell

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

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