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
use local coord if shader is bitmap for draw circle
use Local coord for draw oval in GrOvalRenderer

This enables us to batch multiple drawOval()
add local coord for draw rrect in GrOvalRenderer
restore transformation matrix if drawDIEllipse fails
rename GrDrawState::AutoLocalMatrix class to GrDrawState::AutoLocalMatrixChange
do not skip save, saveLayer and restore in SkLightDeferredCanvas

Skipping these commands will create unbalance in save/restore count
disable scissor test during MSAA renderbuffer to texture blitting
 Mix rrect/ellipse/circle in GrOvalRenderer Batching.

    This patch creates two index buffers for GrOvalRenderer.  One Index Buffer for circle  (fill and stroke) + simple rrect (x and y radii are same) for fill and simple rrect (x and y radii are same for stroke.  The second index buffer for oval (ellipse) for fill and stroke, and for rrect where (x != y) for stroke and for fill.

    Both index buffers for circle and ellipse are pre-populated with 0, 1, 2, 2, 0, 3, 4, 5, 6, 6, 4, 7,.........
    Reasons of two index buffers are oval and circle has different shaders

    For circle and oval, 4 vertices are created 6 indices are being used.
    For rrect fill, 36 vertices are created and 54 indices are being used.
    For rrect stroke, 32 vertices are created 48 indices are being used.