Use bilinear filtering for animated images

Animated images are eating up a lot of CPU cycles particularly on a
device with device scale > 1. One example is the Chromebook pixel.
This change forces low interpolation quality (aka bilinear) for images that are potentially animated.

One change is made to GIFImageDecoder to detect if an image is
non-animated. It checks for all data received, image fully parsed and
only contains one frame. This test is extra strict so as not to break
existing content.

WEBPImageDecoder now also reports cAnimationNone if it is not
animated.

This change does not affect JPEG, PNG and BMP. The rendering quality of
progressively decoded images is unchanged.

BUG=347767

Review URL: https://codereview.chromium.org/178193029

git-svn-id: svn://svn.chromium.org/blink/trunk@168759 bbb929c8-8fbe-4397-9dbb-9b2b20218538
Should not repaint if a CSS property change can be composited

This patch fixes a case that when a RenderObject has StyleDiffLayout,
its composited descendants shouldn't repaint if the style changes can be
composited (and don't change the layout of them).

The optimized CSS properties are clip, position, z-index,
opacity, transform, and filter.

BUG=338926

Review URL: https://codereview.chromium.org/182383019

git-svn-id: svn://svn.chromium.org/blink/trunk@168760 bbb929c8-8fbe-4397-9dbb-9b2b20218538