Added support for secondary vtables.

We previously made the assumption that the vtable idx specified for
a call is relative to the start of the static type's (and all descendent)
types' vtable. However, this is not always the case and sometimes
the vtable idx is relative to the vtable of a sub-object (called a
secondary vtable - i.e. a vtable within a vtable that starts at some
offset).

We now obtain information about subobject offsets (using rtti info) and
use this to obtain the correct vtable idx (when necessary). We also use
these offsets to adjust the vtable idx when we look in descendent classes
(as the index of the current class in the subclass may not be in the same
place).