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
[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
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