• Only trigger a frame build if scene properties have changed.

    In many important use cases (e.g. video playback on youtube) the
    display list doesn't change very often. Typically, the only
    thing changing between frames are the natively decoded video
    texture surfaces.
    
    In these cases, we can save a significant amount of CPU usage
    and battery power by not building a frame at all.
    
    Previously, any call to set/update dynamic properties would
    trigger a frame rebuild. However, it's often the case that
    Gecko sends dynamic properties updates that are either empty
    or exactly the same as the previous frame.
    
    With this change, WR will compare the scene properties and
    only trigger a frame rebuild if they have actually changed.
    
    This is a partial step towards fixing #2917 - a couple of
    other changes are also needed to completely avoid a frame
    rebuiild in this use case.
    gw3583 committed Jul 24, 2018