Remove Surface copy constructor and owns_internal_surfaces field.

This simplifies the code.
Reimplement Tileset::set_images() properly.