Refactor per-player shrouds & fix shellmap shroud.
Display selection decorations to allies & observers.
More shroud refactoring.

This introduces a hash on Shroud which ShroudRenderer
can observe, removing the need to explicitly twiddle
a dirty flag between objects.

Shroud disabling is now done via RenderPlayer, so
enabling the cheat or winning/losing will now give
vis equivalent to an observer.
LocalPlayer.Shroud is never the right shroud.
Fix selection decorations being drawn behind fog.
Fix shroud for observers observing a player after win/loss.
Allow maps/mods to properly disable fog or shroud (or both).
Merge pull request #3020 from pchote/shroud-sanity

Refactor per-player shrouds.