feat: make SOUND/BEEP audible, add SPACE$ and LET, guard empty loops
- SoundQueue renders a phase-continuous square wave (44.1 kHz 16-bit)
through a daemon-fed SourceDataLine in GUI mode; falls back to
timing-only in headless/tests and when no audio device opens
- SPACE$ returns n spaces (previously misread as an array reference,
surfacing as "Subscript out of range")
- LET keyword parses as plain scalar or array-element assignment
- empty-body DO/WHILE spins now enforce the --steps budget, so
headless INKEY$ wait loops terminate instead of hanging