simplify construction of the recovery progress bar

Instead of six separate images for the left end, right end, and tiled
center portion of the full and empty progress bars, just use two
images:  a full bar and an empty bar.  Draw the left side of the full
bar and the right side of the empty one, moving the boundary rightward
to "fill" the bar.  This makes recovery trivially smaller, and allows
fancier images to be used as progress bars.

Support paletted PNG images as resources.
diff --git a/minui/resources.c b/minui/resources.c
index 7ecfeef..3d2c727 100644
--- a/minui/resources.c
+++ b/minui/resources.c
@@ -97,9 +97,10 @@
     int color_type = info_ptr->color_type;
     int bit_depth = info_ptr->bit_depth;
     int channels = info_ptr->channels;
-    if (bit_depth != 8 || (channels != 3 && channels != 4) ||
-        (color_type != PNG_COLOR_TYPE_RGB &&
-         color_type != PNG_COLOR_TYPE_RGBA)) {
+    if (!(bit_depth == 8 &&
+          ((channels == 3 && color_type == PNG_COLOR_TYPE_RGB) ||
+           (channels == 4 && color_type == PNG_COLOR_TYPE_RGBA) ||
+           (channels == 1 && color_type == PNG_COLOR_TYPE_PALETTE)))) {
         return -7;
         goto exit;
     }
@@ -118,6 +119,10 @@
     surface->format = (channels == 3) ?
             GGL_PIXEL_FORMAT_RGBX_8888 : GGL_PIXEL_FORMAT_RGBA_8888;
 
+    if (color_type == PNG_COLOR_TYPE_PALETTE) {
+      png_set_palette_to_rgb(png_ptr);
+    }
+
     int y;
     if (channels == 3) {
         for (y = 0; y < height; ++y) {