Bug 1018862 part 1 - Factor out common async animation test methods; r=dholbert

This patch moves some test utility methods from test_animations_omta.html to
animation_utils.js. It also renames addAsyncTest to addAsyncAnimTest and
likewise for a few other methods.
Bug 1018862 part 2 - Make new_div no longer secretly flush styles; r=dholbert

This patch removes the line from new_div that forced a style flush. This was
very confusing because:
* It behaved differently to new_div in test_animations.html so copying tests
  over was more complex (particularly when registering for events is involved).
* It meant after setting up initial style using new_div you could just call
  waitForPaints but if you updated style using elem.style you'd need to call
  waitForPaintsFlushed.

In adjusting test_animations_omta.html we are able to simplify the tests
somewhat. This patch also adds a few additional checks that waiting to update
the compositor does not produce different results.
Bug 1018862 part 3 - Fix the order of arguments to omta_is_approx; r=dholbert

This patch simply re-arranges the order of arguments to omta_is_approx so that
the delta sits along side the values being compared.

This, I think, makes more sense and also is more consistent when converting
tests from test_animations.html to test_animations_omta.html since the
"RunningOn" parameter is consistently inserted in the second-to-last position
just before the description for both omta_is and omta_is_approx.
Bug 1018862 part 4 - Move omta_is and friends to animation_utils.js; r=dholbert

This patch simply moves code from test_animations_omta.html to
animation_utils.js so that we can use it for testing transitions as well.
Bug 1018862 part 5 - Move paint listener promise wrappers to animation_utils.js; r=dholbert

This patch moves some utility methods from test_animations_omta.html to
animation_utils.js so that they can be used for testing transitions as well.
Bug 1018862 part 6 - Fix handling of 3d matrices in omta_is and co.; r=dholbert

This patch fixes a bug in the handling of 3d matrices represented as an array of
numbers.
Bug 1018862 part 7 - Convert test_transitions_per_property.html to use OMTA test methods; r=dholbert

This patch takes the existing tests for transitions running on the compositor
and makes them re-use the same test utility methods as used for testing CSS
Animations that run on the compositor. This means these tests now also check
that the transition is in fact running on the compositor when it is expected to.

It seems the big_omta_round_error is no longer needed so I've removed that.

The test that begins with "skew(45deg, 45deg)" currently fails so it is skipped
here. This is addressed in the next patch in the series.
Bug 1018862 part 8 - Add special handling for non-invertible transforms; r=dholbert

This patch adjusts the tests for transform transitions that run on the
compositor to handle transitions that begin with a non-invertible transform.
In this case the first sample at the start of the animation won't create
a layer because in nsDisplayTransform::BuildLayer
/ FrameLayerBuilder::BuildContainerLayerFor we'll skip creating the layer once
we notice the equivalent matrix is singular.

In this patch we detect that case and force an extra sample betwee 0 and 200s at
100s. This means the layer will be created at t=100s and be available for
querying at the next sample.

Similar issues could occur, for example, if the transforms at both t=0s
and t=100s are not invertible but currently that doesn't occur. We can add
handling for that if and when it becomes necessary.
Bug 1018862 part 9 - Remove nsIDOMWindowUtils::GetOMTAOrComputedStyle; r=dholbert

Now that getOMTAOrComputedStyle is no longer used by any tests it should be
removed. It is a footgun because it can lead the test author to think they
are testing compositor animations (OMTA) when in fact they are just testing
main thread animations.

This has bitten us before because while we were getting results from the
compositor on some platforms when run locally, on Tinderbox the only build
configurations that had OMTA turned on were falling back to returning the
computed style.
Bug 1004377 - Dispatch events for CSS Animations with empty keyframes rules; r=dholbert

This patch removes the check that skipped queueing events for animations
without keyframes since the spec indicates such animations should dispatch
events.

There is a further correctness fix here for the case where a keyframes rule
is modified using the CSSOM so that it becomes empty. Previously when we
came to create the new animation rules we would end up setting
ElementAnimations::mNeedRefreshes to false since we check if the keyframes
rule is empty and if it is we would skip all further processing (including
setting mNeedsRefreshes).

That means that:
(a) We may end up unregistering from the refresh observer so we would never
    dispatch the end event for such an animation.
(b) If the animation was running on the compositor we may never remove it from
    the compositor or may not do it in a timely fashion.

To fix both these problems, this patch removes the check for an empty keyframes
rule so that mNeedsRefreshes is set in this case.