external/skia Hooks for optimized blitting

Add in hooks to allow for overriding blitting operations with
optimized functions

Change-Id: If38010a69d9fe7cf412d91c277db666f2fd7df34
(cherry picked from commit 593368559d83c27e5b2d834b57d048e107e8b123)
SkBlitter_RGB16: Add device-specific optimization hooks

Change-Id: I18bf4825669fef6fcc10e5d48271e7ea9abb3ed6
(cherry picked from commit 5d5e3dd98e15a5d25fcddf41f00dc5989942d094)
(cherry picked from commit afbd633b035a8b8f6017f52f6ad398a076aee841)
(cherry picked from commit 814fe785689f0b018283fbc2b02a2d230f0221cb)
(cherry picked from commit d9c9fb807b11d3f12e0f687bef40c58ad2ed7ae1)
SkDraw::drawRect  optimization

New class in SkDeviceLooper.cpp falls in in the critical code path of
SkDraw::drawRect().  This new class SkDeviceLooper does nothing except
for bound checking. It copies the modified rect bounds into new pointer
variables and returns them back "if needed". The additional overhead of
creating an object of SkDeviceLooper class and calling member functions
reduces performance.  This patch creates a pre-check condition and if
it succeeds we know for sure SkDeviceLooper won't change the rect
bounds. Under this condition, we avoid using the SkDeviceLooper class.

Change-Id: I11fa13ace8d50d52069e1780a14874e4c34133f2
(cherry picked from commit d29be0547d1b6a36443b4f972dce100bb85f0b38)
external/skia: Update QC hooks

Cleaner way to use weak functions for hooks

Change-Id: Ic9ff68b6f406323d464433fb43aef151c07c45e9
(cherry picked from commit 5c4182f8faa0422bf35285d1762b019b11c352be)