Use PixelBuffer objects as the interface for encoders and decoders

This avoid a lot of unnecessary middle men. This also pushes the
responsibility for pixel format conversion into the encoders and
decoders. The new bufferFromBuffer() is used for direct conversion,
rather than PixelTransformer/TransImageGetter.
diff --git a/common/rfb/zrleDecode.h b/common/rfb/zrleDecode.h
index 4bcbf1f..42b28b3 100644
--- a/common/rfb/zrleDecode.h
+++ b/common/rfb/zrleDecode.h
@@ -48,7 +48,7 @@
 
 void ZRLE_DECODE (const Rect& r, rdr::InStream* is,
                   rdr::ZlibInStream* zis, PIXEL_T* buf,
-                  CMsgHandler* handler)
+                  const PixelFormat& pf, ModifiablePixelBuffer* pb)
 {
   int length = is->readU32();
   zis->setUnderlying(is, length);
@@ -73,7 +73,7 @@
 
       if (palSize == 1) {
         PIXEL_T pix = palette[0];
-        handler->fillRect(t, pix);
+        pb->fillRect(pf, t, pix);
         continue;
       }
 
@@ -173,7 +173,7 @@
 
       //fprintf(stderr,"copying data to screen %dx%d at %d,%d\n",
       //t.width(),t.height(),t.tl.x,t.tl.y);
-      handler->imageRect(t, buf);
+      pb->imageRect(pf, t, buf);
     }
   }