Greatly simplify vm_state_t::run

Really, no reason to have it more complicated than this.
Fix incorrect pointers to for loop labels.

Labels were being inserted after the comparison, so although they were
first in order in the data, they were coming out on the for loop's
jump instruction rather than its test.
Also fix a huge error with JUMP instructions.

Was dereferencing -the wrong operands-. I think this might've been a
holdover from an earlier version of the jump instruction, but anyway,
this was horrifyingly wrong.

Added a specific litflag now as well, too.
Fix differing vm_state_t::stack calls.

Old one was still offsetting the provided location by EBP, which it
shouldn't have been doing.
Pop host call arguments off the stack.

Using a reverse iterator is neat but kind of stupid in an attempt to
be fancy, in retrospect. Just pop the damn things.
Also fix incorrect stack call in vm_state_t::push.

This might have contributed to me not noticing the stack bug earlier.
Break set/prepare_unit into separate methods.

Pending vm_unit_t move constructor addition.
vm_unit_t move assignment/ctor support for vm_unit_t.

Handy since I don't want to force vm_state_t to unnecessarily copy a
unit when it could just take ownership of it and call it done.
Allow vm_state_t to take ownership of a unit's data.

Just uses move assignment.
Simplify vm_state_t::pop

Just determine the top of the stack once.
Simplify test.asm a bit for testing.