Fix buggy blend modes.
Fix buggy blend modes.

The problem turns out to be not over- or underflow like I thought, but that I used different math for x*y/255 for alphas and colors, sometimes resulting in colors where alpha was one less than the maximum color component, which is not a valid SkPMColor.

To be safe, I've switched over all four of these similar complex modes to use exact math everywhere.  They now match the byte-by-byte code in SkXfermode.cpp exactly.

This will slow down Darken and Lighten by about 2x.  I plan to follow up with a CL to see if I can eek out some speed there, and another CL to add asserts that Sk4px code always writes valid SkPMColors.

BUG=skia:4052

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

Hikari-no-Tenshi/android_external_skia,nvoron23/skia,Jichao/skia,noselhq/skia,google/skia,vanish87/skia,tmpvar/skia.cc,nvoron23/skia,qrealka/skia-hc,Jichao/skia,shahrzadmn/skia,shahrzadmn/skia,shahrzadmn/skia,noselhq/skia,todotodoo/skia,ominux/skia,Hikari-no-Tenshi/android_external_skia,aosp-mirror/platform_external_skia,Hikari-no-Tenshi/android_external_skia,ominux/skia,HalCanary/skia-hc,noselhq/skia,HalCanary/skia-hc,todotodoo/skia,ominux/skia,rubenvb/skia,aosp-mirror/platform_external_skia,tmpvar/skia.cc,vanish87/skia,Jichao/skia,ominux/skia,tmpvar/skia.cc,HalCanary/skia-hc,todotodoo/skia,HalCanary/skia-hc,Jichao/skia,Hikari-no-Tenshi/android_external_skia,ominux/skia,aosp-mirror/platform_external_skia,todotodoo/skia,google/skia,vanish87/skia,nvoron23/skia,HalCanary/skia-hc,tmpvar/skia.cc,noselhq/skia,Hikari-no-Tenshi/android_external_skia,pcwalton/skia,tmpvar/skia.cc,Hikari-no-Tenshi/android_external_skia,google/skia,todotodoo/skia,HalCanary/skia-hc,todotodoo/skia,tmpvar/skia.cc,nvoron23/skia,vanish87/skia,qrealka/skia-hc,pcwalton/skia,vanish87/skia,shahrzadmn/skia,Jichao/skia,rubenvb/skia,shahrzadmn/skia,HalCanary/skia-hc,Hikari-no-Tenshi/android_external_skia,ominux/skia,rubenvb/skia,qrealka/skia-hc,aosp-mirror/platform_external_skia,pcwalton/skia,noselhq/skia,nvoron23/skia,vanish87/skia,google/skia,google/skia,todotodoo/skia,pcwalton/skia,nvoron23/skia,HalCanary/skia-hc,shahrzadmn/skia,tmpvar/skia.cc,shahrzadmn/skia,google/skia,noselhq/skia,rubenvb/skia,rubenvb/skia,tmpvar/skia.cc,qrealka/skia-hc,rubenvb/skia,tmpvar/skia.cc,rubenvb/skia,vanish87/skia,ominux/skia,aosp-mirror/platform_external_skia,todotodoo/skia,rubenvb/skia,shahrzadmn/skia,Jichao/skia,pcwalton/skia,nvoron23/skia,Jichao/skia,noselhq/skia,shahrzadmn/skia,google/skia,aosp-mirror/platform_external_skia,Hikari-no-Tenshi/android_external_skia,google/skia,todotodoo/skia,Jichao/skia,pcwalton/skia,HalCanary/skia-hc,qrealka/skia-hc,Jichao/skia,pcwalton/skia,google/skia,qrealka/skia-hc,vanish87/skia,aosp-mirror/platform_external_skia,qrealka/skia-hc,nvoron23/skia,ominux/skia,pcwalton/skia,aosp-mirror/platform_external_skia,vanish87/skia,qrealka/skia-hc,aosp-mirror/platform_external_skia,nvoron23/skia,pcwalton/skia,rubenvb/skia,noselhq/skia,aosp-mirror/platform_external_skia,rubenvb/skia,google/skia,noselhq/skia,ominux/skia,HalCanary/skia-hc