Viewport rendering now works for layered images

Not so interesting, since you can't move layers around, but obviously
that is coming!

As part of this commit, I'm experimenting with a new strategy where
image layers are forced to 32bpp, regardless of their original color
depth.  As noted in the comments, this has trade-offs: obviously memory
usage goes up, and some image edit functions will see performance drops
due to the extra channel operations required.

That said, there are some big benefits, mostly relating to ease-of-use
when implementing stuff like layer blending, erase tools, layer masking,
green screen, and other operations that require 32bpp data.  Basically,
all these actions can happen without regard for layer color depth if an
alpha channel is *always* present.

Anyway, I think there may be merit to only using 32bpp image data in the
project.

I'll be running a lot of tests in the coming weeks as part of layer
optimizing, so no strategy is set in stone yet.