SVG property initial value mechanism and support for SVGAnimatedLength

This CL introduces a mechanism for handling "initial values" for SVG
properties. The initial value is stored in a new
|initial_value_storage_| field in SVGAnimatedPropertyBase. Subclasses
that need to store an initial value - for many cases a default
initialized object is sufficient - define what is stored in the allotted
number of bits (and thus indirectly how many bits that are required.)

The SetInitial method needs to be overloaded on the SVGPropertyBase
subclasses that the SVGAnimatedProperty holds, and is responsible for
resetting the value of the property (after "decoding" the value.)

This CL adds an implementation of the above for SVGAnimatedLength. For
this type, the initial value is stored as an index into a table of
values.

The 'fx' and 'fy' properties on SVGRadialGradientElement are updated to
have their initial values be 50% (matches Gecko.)

Bug: 225807, 474523
Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_slimming_paint_v2;master.tryserver.blink:linux_trusty_blink_rel
Change-Id: Ida144d6bed2d1946186e8fb3b3a0b9695ca81789
Reviewed-on: https://chromium-review.googlesource.com/1193822
Reviewed-by: Philip Rogers <pdr@chromium.org>
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#588797}
31 files changed