Simplify and optimise

The one extra loading buffer was completely unnecessary for incremental loading.
Data can be decoded directly into the pixbuf.  By removing the buffer, both
memory and computational complexity improves significantly.

The pixel data is now initialised to 0x00, so that the user doesn't receive
random garbage while the picture is still loading.

I also inlined the function I added in my recent commit.