Simple animation tests

Add a test that xlink:href can be used to specify the animated element.

Also add several other animation tests from https://github.com/ericwilligers/svg-animation.

We create an animation using the Polyfill implementation, and another using the native implementation, and verify property expectations at a sequence of times.

Unfortunately, the animated value of the fill property isn't being reported for the natively animated element, only for the element animated using the SMIL Polyfill. We animate the fill value in color.html and attempt to test in color-check.js (With the other properties being animated, this problem isn't occurring.)
Allow for mpath element without animateMotion parent

We were previously setting the mpathRecord member of undefined, when we assigned to
  animationRecords[element.parentNode].mpathRecord
without checking that element.parentNode was present in animationRecords.

We were assuming that the parent element of an mpath element would be an animateMotion element, and therefore already in animationRecords. This is the only context in which mpath is useful, but we shouldn't make assumptions about the SVG we will encounter.
Support keyTimes in keyframe animations

Add support for the keyTimes attribute, used to control the times in [0..1] at
which supplied values take effect.
getSimpleDuration and friends

Add the following to AnimationElement prototype:-
- targetElement property
- getSimpleDuration()
- getCurrentTime()
- getStartTime()

These are defined on SVG animation elements, even if the onload event
has not fired yet.

All duration and time values returned are in seconds.

To support testing of getCurrentTime, we modify the Web Animations polyfill so that, after _pauseAnimationsForTesting has been called, timeline currentTime is the pauseAt time.
Merge pull request #9 from ewilligers/keytimes

Support keyTimes in keyframe animations
Merge pull request #8 from ewilligers/get-simple-duration-testing

getSimpleDuration and friends
Merge pull request #7 from ewilligers/accumulation-tests

Allow for mpath element without animateMotion parent
Merge pull request #6 from ewilligers/simple-animation-tests

Simple animation tests
Web Anim iterationComposite for motion path

Use the updated Web Animations polyfill that supports iterationComposite
for motion path animations.
Merge pull request #11 from ewilligers/wa-iteration-composite-motion-path

Web Anim iterationComposite for motion path
keyTimes without lint warnings

Address long-line lint warnings in keyTimes handling code.
Merge pull request #12 from ewilligers/keyTimes-lint-fix

keyTimes without lint warnings
Improve motion path support

The 'auto-reverse' option for the 'rotate' attribute is now supported.
This enabled auto-rotation, and also adds a 180 degree rotation.

We exercise the 'accumulate' option for the animateMotion element.
This corresponds to the iterationComposite option for Web Animations.
Merge pull request #10 from ewilligers/iteration-composite-motion-path

Improve motion path support
Avoid null transform error in polyfill

The Web Animations Polyfill no longer reports an error when the SVG
transforms for the motion path complete, as we use '' instead of null as
the default transform value.

Similarly, we avoid reporting errors during motion path animations when additive="sum".
animateMotion-iterationComposite.html exercises this case.
Merge pull request #13 from ewilligers/avoid-null-transform-error

Avoid null transform error in polyfill
Strengthen test expectations

Where the polyfill and native implementation of SMIL are known to report
different attribute values, match the observed polyfill attribute value
against the expected polyfill attribute value, and the observed native
attribute value against the expected native attribute value.
Merge pull request #14 from ewilligers/allow-missing-attribute

Strengthen test expectations
Observe new animation elements

Use a Mutation Observer to detect when SVG animation elements are added
to the document.

Our test verifies that when the IDL attribute targetElement is read on a
newly created animation element, the target node has correctly been set.
Merge pull request #15 from ewilligers/observe-new-animations

Observe new animation elements