Label ID allocation; we want to avoid using any label IDs already used by the original shader.
`cf_flattener_iterate_instruction_array()` emits an error if a label instruction is encountered. The backend had no support for labels, so this is not a regression; it just moves the issue to the IR instead. Also AFAIK the backend has no support for instructions which use labels.
The issue Giovanni identified about the intermediate state of e.g. IF/ELSE/ENDIF inside loops.
I think the only alternative is to replace all high-level CF instructions in one commit.
One thing that's not clear to me is whether that ends up resulting in invalid SPIR-V, or just vsir that looks a bit funny.
While splitting the commits, my intention was that while it looks a bit odd, it still always produces valid SPIR-V, which is not hard to arrange because different CF instructions don't really interact with each other. It works in SotTR, but the best test would be to run Gio's shadowCI on the two intermediate commits, if that can be done without too much trouble.