Texture sizing fix

In its current state of things, Image always makes a single SDL_Texture
sized to the same size as the the source image.  This can cause a
problem when the image is larger than the largest texture supported by
the player's video card.  This change fixes things such that we take the
largest supported texture into account and slice the source image up
into pieces such that no piece is larger than the largest supported
texture, and then create multiple textures from those subimages.  Then
we add some extra processing in Image::Draw() to properly draw those
sliced-up images, taking flipping and clipping into account.