Switch method of using trimmed sprites to support scaling and rotation

Currently, scaling and rotating trimmed sprites on Canvas simply offsets them by the (unscaled, unrotated) trim amount.

This PR splits the transform to do the trim offset before the scale/rotation, which correctly handles trim in both cases.

I haven't checked out WebGL behaviour yet.