CSS Transforms: Implement perspective

Implements perspective as defined in CSS Transforms[1]. Behavior is
similar to -webkit-perspective, but numbers without units are not
valid. In both variants we accept zero although Gecko and spec
require a positive value.

The animation system is modified to avoid running animations and
transitions on both the prefixed and unprefixed variants at the same
time. Internally, animations are mapped to the unprefixed variant.
As animations operate directly on the RenderStyle storage the result
of specifying an animation/transition on either property is the same.

Transitions now track the specified transition-property such that
the end event may reference it. (eg. transition:
-webkit-perspective; will fire an end  event with
propertyName == '-webkit-perspective'). As transitions operate on
changes to values within a RenderStyle, 'transition: all;' only
ever starts transitions on the unprefixed variants.

Note, this property is guarded by the CSSTransformsUnprefixed runtime
feature (enabled only for testing).

[1] http://www.w3.org/TR/css3-transforms/

BUG=154772

Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=170326

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

git-svn-id: svn://svn.chromium.org/blink/trunk@170517 bbb929c8-8fbe-4397-9dbb-9b2b20218538
Declare onFinish event handler for AnimationPlayer.

Finish events occur when a sample occurs that causes a player to be newly limited or newly disassociated with a timeline. 
(From section 3.5.4 Player events 
http://dev.w3.org/fxtf/web-animations/#player-events
and section 5.19 The AnimationPlayerEvent interface
http://dev.w3.org/fxtf/web-animations/#the-animationplayerevent-interface )

Subsequent CL 216203003 dispatches the events declared here.

BUG=356120

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

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