Key changes:
- Added a prepared-layout API in layout-custom.c:
- Parse and validate once.
- Retain the validated temporary tree.
- Apply through a no-failure, consuming operation.
- Multi-window layouts prepare every record before changing any window.
- Removed duplicate parsing, recalculation, and notification work.
- Restored very old legacy layouts where pane IDs are absent.
- Added structural validation before and after surplus-cell pruning.
- Split pane-ID uniqueness and matching logic.
- Renamed LAYOUT_FORMAT_NEW to LAYOUT_FORMAT.
- Kept LAYOUT_CELL_HIDDEN as the requested serialization/rendering marker
only.
- Updated documentation and regression coverage, including:
- Historical bb62,... layouts.
- Malformed discarded cells.
- Maximum parser nesting depth.