Clean up warnings, mostly unused variables
Add a protected Surface constructor that accepts an SDL_Surface
Refactor most of display::Surface into display::LegacySurface

This makes it clear which display operations depend on pixel-level
access and 8-bit palettes, and which operations do not.