Implement Surface.convert
start writing subsurface support for blit