Create reference/create a scratch texture from a bitmap only it does not have

A bitmap can be backed by a valid texture.  During when converting
a bitmap to a GrEffect from a bitmap shader, we check whether there is
 a valid texture.  Only create/reference a new texture if bitmap does not
have one.

If there is a texture, we must check whether target driver support npot and
tiling.  If not, we need to create a pot texture, paint orig texture to
pot texture
fix texture red support in mesa gles driver.

Mesa GLES 3.0 does not support GL_EXT_texture_rg
Do not draw bitmap directly on non-msaa render target

If AA is specified, and the dst rect is not pixel-aligned,
do not draw bitmap on non-msaa render target directly
in drawBitmap(), drawBitmapRect(), drawBitmapRectToRect().  Instead,
we must convert these calls to drawRect() so that it goes to GrAARect or
GrAAConvex renderers.

The exception is bitmap size bigger than max texture size.  In this case,
SkBitmapProcShader cannot handle. we will let drawBitmapCommon to handle
this
Make deep copy of SkPath
check matrix does not have rotation or perspective transformation

When checking whether we need apply AA to a rect for non-msaa target,
simply check the mapped rect is integer is not enough.  We need to
check whether the transformation matrix has transformation other than
simple translation