Manages tile highlight overlays on the board. Highlights are grouped by BoardHighlightType and tracked as sets of TerrainObjects so they can be cleared as a unit. When multiple types cover the same tile, only the highest-priority type is rendered. Removing a type auto-reverts to the next active type so lower-priority highlights are never stomped permanently.
Reconciles the current highlighted set against an incoming set. Tiles only in the new set are highlighted (if priority permits); tiles only in the current set are removed (with fallback to lower-priority types if present).
Removes the highlight type from all its tiles, reverting each to the next active type if one exists, or fully unsetting the highlight if not.
Switches a tile away from the given type. Finds the next highest-priority type still covering this tile and calls setHighlight for it, or calls unsetHighlight if nothing else is covering it.