Implement Surface.convert properly

Make it take a PixelFormat and return the conversion of the current surface.