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 : 7b2686dc820a0b0985664b52ca030200f130a293
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 : 9698383aeff2c9cb5ee7655e18d5c491379dd495
Bug 911889. Part 4. Add API to detect whether an nsGlobalWindow is running a timeout handler. r=bz

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

--HG--
extra : rebase_source : 3cb0dccfe176b5f6d79fd0898ddf6e5a8bed2e39
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 : 4104e9b35aed26f24d42017bdb158f168dd67e85
Bug 911889. Part 7: A single change to CSS 'transform' should not be treated as animation. r=dbaron

--HG--
extra : rebase_source : 1462732be85f3b52e8b8a842872a7bde7b54e6e5