kidlisp: melody parity + shared beat transport + clock alias master
Consolidate melody handling so KidLisp's (melody …) and the clock piece share one engine: - New lib/melody-highlighter.mjs: per-note coloring extracted from clock.mjs (parameterized + pure). clock.mjs now calls it via a thin wrapper (−860 lines, behavior preserved). KidLisp source highlights (melody "…") / (clock "…") string literals with the same note colors. - New lib/melody-transport.mjs: shared musical clock (bpm + origin). First melody is master. Adds `b` beat timing unit (1b/0.5b/2b) whose interval derives from tempo, plus `beat`/`beatphase` expression vars. s/f timers phase-align to the transport (0 offset when no melody → legacy-identical). - melody-parser.mjs: buildMelodyState/buildSequenceState/sequenceDurationBeats. - KidLisp (melody …) now plays full multi-track: parallel (space), sequential (>), per-note waveform/volume/struck/sonicDuration/toneShift, rests. New scheduler mirrors clock's accumulation model (+64-note catch-up cap). - (clock "cdefg" …) is now an alias for (melody …) — bare (clock) still returns UTC ms. Nice synergy with the clock piece. KidLisp evaluator spec: 9/9 pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>