(Relanding r7275 with assert fix, plus fixes from r7276, r7280, r7283.)

Implement a bicubic resampling image filter, with raster and GPU backends.
In order to get this to work on the GPU side, I had to modify the width and height of the drawn texture in drawSprite() and drawDevice() to use the filtered texture's dimensions, instead of the source texture.  (This wasn't a problem before since all other image filters produce results the same dimensions as their input texture.)
For now, this implementation only does axis-aligned scaling (same as the Lanczos-3 implementation in Chrome).  It's also done for correctness and clarity, not speed, so there are lots of opportunities for speedups.

Committed: https://code.google.com/p/skia/source/detail?r=7275

Review URL: https://codereview.appspot.com/7033049

git-svn-id: http://skia.googlecode.com/svn/trunk/gyp@7287 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/effects.gypi b/effects.gypi
index b8defb4..8c61c34 100644
--- a/effects.gypi
+++ b/effects.gypi
@@ -11,6 +11,7 @@
     '<(skia_src_path)/effects/Sk2DPathEffect.cpp',
     '<(skia_src_path)/effects/SkAvoidXfermode.cpp',
     '<(skia_src_path)/effects/SkArithmeticMode.cpp',
+    '<(skia_src_path)/effects/SkBicubicImageFilter.cpp',
     '<(skia_src_path)/effects/SkBitmapSource.cpp',
     '<(skia_src_path)/effects/SkBlendImageFilter.cpp',
     '<(skia_src_path)/effects/SkBlurDrawLooper.cpp',
diff --git a/gmslides.gypi b/gmslides.gypi
index a50d084..8d772f3 100644
--- a/gmslides.gypi
+++ b/gmslides.gypi
@@ -4,6 +4,7 @@
     '../gm/aaclip.cpp',
     '../gm/aarectmodes.cpp',
     '../gm/arithmode.cpp',
+    '../gm/bicubicfilter.cpp',
     '../gm/bigmatrix.cpp',
     '../gm/bitmapcopy.cpp',
     '../gm/bitmapmatrix.cpp',