Separate the variable indices for virtual and non-virtual variables.

The variable_index_offset now points to the first non-virtual
variable of the current program. This was necessary as updating
programs (#233) can move the variable block of a virtually
inherited program to the end of the virtual variables. Until
now the variable_index_offset included the variables of
virtually inherited programs. When the inherited program's
block moved behind the inheriting program's block, the offset
could become negative und thus screwing things up.

Keeping the number of virtual and non-virtual variables
also eases the inherit handling.