Reject MOVEM instructions with two register lists

Raise an assembly error when assembling a MOVEM instruction in which
both operands can be interpreted as a register list. Before, if the
first operand could be interpreted as a register list, the second
operand would be interpreted as an effective address, which could lead
to confusing errors if the second operand was meant to be the register
list and the first operand was accidentally a valid register list.
BaseProgramsTest: improve messages for wrong number of steps
Require a label on a macro definition
Add tests for macros
Consider empty expressions invalid
Add tests for StringValueVisitor