Fix and refactor transform-image

This started cause I couldn't immediately tell what the keyword parameters in u, v, x and y did. After experimenting I saw that the u, v keyword parameters had no effect because the preshift matrix they're used in is always clobbered by the post shift. So I fixed this, split out the matrix adjustment into its own function, gave the keyword parameters somewhat more informative names and wrote a big doc string that details the exact semantics of transform-image. I also put the large boolean test for whether or not to use the fast affine transform function into its own predicate.

If these changes are too drastic the simple fix would be to just change xfrm on line 577 to xfrm-shift.

All the best,
Avram