do not duplicate generating GrPaint in SkGpuDevice::drawPath()
This is little hacky because the way skia constructs color stages and
stores local transformation.

If we are drawing a simple rectangle of a bitmap, existing skia stores two
transformation matrix.  Local view matrix tranforms a coordinates into
render target coordinates.  A effect transformation matrix then further
transforms the render target coordinates into texture uv space.

This is quite inefficient because each draw rectangle results in a separate
glDrawElements().  A better way is construct a local rectangle from supplied
rectangle and we computes the local coordinates before sending to shader.
The shader then computes the uv space.  The benefit is that the effect
transformation matrix stays same regardless of rectangle translation,
scale and rotation such that we can combine multiple draw of same bitmap
into a single glDrawElements().
due to lost of precision in floating point math operation, we have to
use approx equal when comparing two transformation matrix