refresh Custom Stencil Mask
Refresh the custom stencil mask for the weather layer layerId after a mask vector layer's paint has been mutated in place (e.g. new line thickness / cap / join). Updates the coordinator's per-tile listeners so subsequent mesh builds use the new paint, replays cached MVT features through the new listeners so already-loaded tiles rebuild their stencil meshes, and asks Mapbox for a repaint.
Crucially this path performs no VectorTileSource.invalidate() calls. Going through the full register flow ends up calling invalidate() 5–6 times per refresh, each of which expires every cached tile in the source and triggers Mapbox to call back into parseVectorTile to re-decode the MVT bytes from scratch. For Demo 3 with a populated tile cache that turned a single slider commit into a minute-long freeze followed by OOM as hundreds of redundant mesh-build coroutines piled up. Skipping invalidate keeps the work proportional to "rebuild meshes for cached tiles", not "redo every MVT decode".
No-ops if layerId isn't a TileLayer, or if the layer has no custom stencil mask spec.