Star map: bake the genre layout so boot doesn't run the O(N²) relaxation

The spread commit pushed computeGenreLayout to N*40 iterations over an all-pairs O(N²) inner loop; at 178 genres that's ~112M pair-evaluations run synchronously at boot before first paint — a multi-second stall (Paul: "load is very slow").

• Bake it: POS in world.js now ships the full relaxed 178-genre layout, precomputed once at a 1200×850 reference viewport.

• Subtlety fixed along the way: the relaxation's normalize keys off the SEED's median spacing, which is much denser once every genre is seeded

• The spread itself is unchanged: 42px min label gap, 0 overlaps, clusters intact (fugue next to prelude), min pairwise 194 > floor.

Verified: 178/178 placed, 0 overlaps, 42.2px gap, D2e PASS.

▶ Play it: The Turning Stair → The Patient Chase — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=prelude&seed=7835&path=896.90,196.90&xdur=1.071

fc567a4 https://github.com/aboard-io/stellate/commit/fc567a4b60c83c4b15b10ab14c67f2df281e08a0