Bug 911889. Part 2: Refactor MarkLayersActive code into its own class and be much more explicit about what it does. r=mattwoodrow
This also changes the functionality a little bit to track independent
per-property mutation counts and independent "content active" status.

--HG--
extra : rebase_source : e69b8e7a95d36720bd38d74f0789ede603e58a09
Bug 911889. Part 3: Create nsLayoutUtils::HasAnimations, and suppress opacity:0 optimizations whenever there's any opacity animation even if it's not using the compositor. r=dbaron

--HG--
extra : rebase_source : b3ffe185686e38226e0979060a74669271e1c2d5
Bug 911889. Part 4. Add API to detect whether an nsGlobalWindow is running a timeout handler. r=bz

--HG--
extra : rebase_source : 17eabb4f819748ab9ec0ef38681c28df7b0a1861
Bug 911889. Part 5. Add API to detect whether an nsRefreshDriver is in the middle of a refresh. r=dbaron

--HG--
extra : rebase_source : 561101da94824f4d6aba151a243f0e193ad7f83c
Bug 911889. Part 6: A scripted change to element.style.opacity or element.style.transform in a setTimeout or requestAnimationFrame callback should trigger our "style property is animated" heuristic. r=dbaron

--HG--
extra : rebase_source : ac1d4ccfa3c82132ff73aeb1d66a09765004be4a
Bug 911889. Part 7: A single change to CSS 'transform' should not be treated as animation. r=dbaron

--HG--
extra : rebase_source : 241ce14bd7b3986141c557da566a3756658befa5