Add code to preserve the scale of the image.

These changes will allow retina images to be resized/manipulated
correctly without becoming blurry. We accomplish this by multiplying by
the scale of the original image each time we use the size of the image
in the CGContext. Then, when converting back to an UIImage, we specify
the original scale.