GraphicsContextState should store an SkXfermode ref.

We're currently storing an SkXfermode::Mode enum value and using
SkPaint::setXfermodeMode(Mode) whenever setting up the paint. But
that means we're invoking the Xfermode factory and allocating a
throw-away SkXfermode on each call.

Instead, we could simply store an SkXfermode ref and use
SkPaint::setXfermode(SkXfermode*) for paint setup. This should avoid
allocating/deallocating an SkXfermode on each draw call.

Mike suggested we could/should handle this in Skia: keep a static array
of pre-allocated SkXfermodes (covering all enum modes), and have
SkPaint::setXfermodeMode() use those (SkXfermodes are immutable). But I
think it's also useful to handle the transfer mode as an SkXfermode ref
in Blink, as it allows us to support custom/non-enum modes transparently
(think new luminance modes, SkArithmeticMode, etc.).

R=senorblanco@chromium.org,schenney@chromium.org,pdr@chromium.org

Review URL: https://chromiumcodereview.appspot.com/23691023

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