Change SkCanvasState to use inheritance.

Cherry-pick of
https://skia.googlesource.com/skia/+/352c2181d15ed053c3b759f08ff1f51d50e2d3bb

The base class, SkCanvasState, now holds the version, width, and
height. These fields will always be a necessary part of the class.
(Also add in some padding.)
The other fields, which may change, have been moved into the
subclass, SkCanvasState_v1. If/when the version changes, it will
correspond to a new subclass.
In SkCanvasStateUtils::CreateFromCanvasState, check the version on
the base class, then do a static_cast to the version corresponding
to SkCanvasState::version.

Remove CANVAS_STATE_VERSION, which is redundant with the version
specified by the subclass.

Use unambiguous type for rowBytes.

Build Android with SK_SUPPORT_LEGACY_CLIPTOLAYERFLAG. This allows us
to run the full suite of CanvasState tests. It is also representative
of what will be used on Android by WebView.

Fix CanvasStateTest where it was broken inside ifdef'ed out code.

Update the comments in the header to be more clear. In particular,
an SkCanvasState can only be used to pass an SkCanvas' state to a
future version of Skia (or the same); not an older version.

NOTREECHECKS=true

BUG=b/15693384
R=reed@google.com, mtklein@google.com, djsollen@google.com

Author: scroggo@google.com

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

Change-Id: I75ef9443291b308a3555e4b2154bdc087f419662
(cherry picked from commit 499badbf98b5f5f7da99271da9b027f4e7468e64)
[skia]: fix gif decode can't decode transparent pixels

Symptom : gif decoder can't decode transparent pixels
Root Cause : the transparent block should be decoded into temp image
Solution : store the transparent block to correct temp image
Reproduce steps : draw a transparent gif image.

Change-Id: I77397edd14387db9cc7e11720b95f1a75e193cb3
(cherry picked from commit b8eefd6eefdada13b1c03658d39df0886283cd39)
Support for HW JPEG Decoder in SKIA

Add support to use HW JPEG Decoder in SKIA
through dynamic loading of vendor specific
library. Vendor library to provide APIs to
check if HW decode is possible for a stream
and if so decode the stream. Methods
allocPixelRef and getPrefConfig in
SkImageDecoder made public because vendor
lib has access only to the SkImageDecoder
and not its derived class.

Change-Id: Ie6e9366603a3a3923d7f041d7601589dadf75ac8
(cherry picked from commit 1a45910c653183c7cbec639eacd4a304ef5960d9)