Implementation of SkBitmapRegionDecoder using SkAndroidCodec

Includes testing in DM and nanobench

BUG=skia:

Review URL: https://codereview.chromium.org/1402863002
diff --git a/tools/SkBitmapRegionDecoderInterface.h b/tools/SkBitmapRegionDecoderInterface.h
index 047f023..e1f79bc 100644
--- a/tools/SkBitmapRegionDecoderInterface.h
+++ b/tools/SkBitmapRegionDecoderInterface.h
@@ -19,19 +19,18 @@
 public:
 
     enum Strategy {
-        kCanvas_Strategy,   // Draw to the canvas, uses SkCodec
-        kOriginal_Strategy, // Sampling, uses SkImageDecoder
-        // TODO (msarett): Add strategy for SkScaledCodec
+        kCanvas_Strategy,       // Draw to the canvas, uses SkCodec
+        kOriginal_Strategy,     // Sampling, uses SkImageDecoder
+        kAndroidCodec_Strategy, // Uses SkAndroidCodec for scaling and subsetting
     };
 
     /*
-     * @param stream   Encoded image stream, takes ownership
+     * @param data     Refs the data while this object exists, unrefs on destruction
      * @param strategy Strategy used for scaling and subsetting
-     * @return         Tries to create an SkBitmapRegionDecoder, returns NULL
-     *                 on failure
+     * @return         Tries to create an SkBitmapRegionDecoder, returns NULL on failure
      */
     static SkBitmapRegionDecoderInterface* CreateBitmapRegionDecoder(
-            SkStreamRewindable* stream, Strategy strategy);
+            SkData* data, Strategy strategy);
 
     /*
      * Decode a scaled region of the encoded image stream