Fix a heap overflow in block transfers, fix most save picture downloads, optimizations

The heap overflow was responsible the crashes I reported before, afaict.

This orders the copy properly such that save pictures generally work.  I've also added some optimizations so we can skip checking framebuffers for most memcpy operations (e.g. textures.)

This also flips the y when blitting for downloading framebuffers, which should not be done generally when blitting framebuffers (e.g. between each other.)

-[Unknown]