Draw in software onto surfaces created from Lua.

Surfaces created from Lua are usually built once by several other
surfaces on them, and then do not change.

- This reduces significantly the size of the subsurface tree.
- Calls to SDL_BlitSurface() are only done when these surfaces are
  built, typically only when something changes in the HUD.
- This fixes the fade-in/fade-out that could not be rendered correctly
  using subsurfaces.