aco/scheduler: Refactor MoveState implementation
Nonfunctional changes following up on !10644 (merged):
- Bookkeeping of register demands happens for two non-overlapping instruction intervals now, making the code easier to follow and slightly faster to run than before.
- The confusing re-use of the
source_idx
/insert_idx
variables is now more straightforward thanks to moving them to a dedicatedCursor
interface - Added code documentation