liblbx: Fix framebuffer allocation for 0x0 images.
The allocation strategy for the framebuffer is the "array2" method from
c-faq: an array of row pointers into a single large array containing all
rows. This was not being freed correctly in the case with 0 rows, since
there would be no pointer to the row data at all in order to free it.
Fix that up by simply allocating a 1x1 framebuffer when it would
otherwise be empty. While we're at it, also add an overflow check
on the multiplication.