vm: A couple fixes to allow multiple runs. Fixes GH #18.

Surprisingly, this only took a couple changes to allow multiple runs:

vm prep now checks two fields: prep_id_start and prep_var_start. These are the
last var read, and the last position of __main__'s registers read. This means
only globals that weren't read from the last prep are read in, as well as
only setting registers necessary for new globals.

vm execute now does not clear out values at the end. lily_vm_free_registers
was doing this anyway. This was the main reason that multiple runs were
discarding vars.

With this, multiple runs behave as one might expect them to (vars are
accessible from a previous run, and available until the interpreter is done).