Simple linear-scan register allocator. Assigns registers to cell params, let bindings, and temporaries.