change pixel-serializer to support reencoding existing data

Trying to evolve this interface so it can
- support rich set of backend-encoders (including ones like ETC1 that can cheaply convert to KXT
- allow for encoding images as well as bitmaps (e.g. for picture serialization)
- perhaps replace SkImageEncoder as an API (assuming we create a factory that returns a serializer given a format)

BUG=skia:

Review URL: https://codereview.chromium.org/1373683003
diff --git a/tests/KtxTest.cpp b/tests/KtxTest.cpp
index e0d9a27..0ad2496 100644
--- a/tests/KtxTest.cpp
+++ b/tests/KtxTest.cpp
@@ -8,6 +8,7 @@
 #include "Resources.h"
 #include "SkBitmap.h"
 #include "SkData.h"
+#include "SkImage.h"
 #include "SkImageGenerator.h"
 #include "SkForceLinking.h"
 #include "SkImageDecoder.h"
@@ -149,14 +150,11 @@
         return;
     }
 
-    bool installDiscardablePixelRefSuccess =
-        SkDEPRECATED_InstallDiscardablePixelRef(fileData, &etcBitmap);
-    REPORTER_ASSERT(reporter, installDiscardablePixelRefSuccess);
+    SkAutoTUnref<SkImage> image(SkImage::NewFromEncoded(fileData));
+    REPORTER_ASSERT(reporter, image.get());
 
-    // Write the bitmap out to a KTX file.
-    SkData *ktxDataPtr = SkImageEncoder::EncodeData(etcBitmap, SkImageEncoder::kKTX_Type, 0);
-    SkAutoDataUnref newKtxData(ktxDataPtr);
-    REPORTER_ASSERT(reporter, ktxDataPtr);
+    SkAutoDataUnref newKtxData(image->encode(SkImageEncoder::kKTX_Type, 0));
+    REPORTER_ASSERT(reporter, newKtxData.get());
 
     // See is this data is identical to data in existing ktx file.
     SkString ktxFilename = GetResourcePath("mandrill_128.ktx");