Speed up shroud rendering using cell changed notifications

Using the CellEntryChanged event introduced in #7057, this PR utilises it in the ShroudRenderer in order to track changes in the shroud, and prevent repeated work.

By keeping a cache of pre-calculated vertices for the shroud, they do not need to be recalculated every single frame vastly reducing the work required. In testing I saw CPU time used by the RenderShroud method drop from 27% to 14%.

(Here's hoping I haven't screwed this up somehow!)

Depends on #7071.