SkBitmapRegionDecoder clean-up

Use SkCodecPrintf instead of SkDebugf.

Check if the conversion is possible rather than starting many decodes
that will certainly fail.

Small refactor to code that deals with subsets that fall outside
of the image.

BUG=skia:

Review URL: https://codereview.chromium.org/1395383002
diff --git a/tools/SkBitmapRegionDecoderInterface.h b/tools/SkBitmapRegionDecoderInterface.h
index bc28c2b..047f023 100644
--- a/tools/SkBitmapRegionDecoderInterface.h
+++ b/tools/SkBitmapRegionDecoderInterface.h
@@ -56,6 +56,11 @@
     virtual SkBitmap* decodeRegion(int start_x, int start_y, int width,
                                    int height, int sampleSize,
                                    SkColorType colorType) = 0;
+    /*
+     * @param  Requested destination color type
+     * @return true if we support the requested color type and false otherwise
+     */
+    virtual bool conversionSupported(SkColorType colorType) = 0;
 
     int width() const { return fWidth; }
     int height() const { return fHeight; }