Fixed "find all overriding c++ funcs" algorithm.

We now correctly implement the algorithm for finding all overriding
functions. Given the absolute vtable index for a function foo() within
a class C's vtable, we previously assumed that the location of foo in a
subclass D of C is the offset of C's vtable within D's vtable + the
aforementioned absolute index. This is incorrect because C's vtable
within D may contain additional entries in certain cases.

The correct approach is to use the subobject offsets. Each sub-vtable
stores a value called offset-to-top which is the pointer offset to get
back to the start of the main object from the particular subobject that points
to this sub-vtable. While a vtable may grow in size in a subclass, the
subobject offsets will not. Thus, the correct approach is to adjust the
subobject offset as you go down the class hierarchy and use the mapping
from subobject offset to vtable index (which we obtain by traversing a
vtable) + the index of the function, to get the absolute index of foo()
in a subclass.
Merge branch 'master' of github.com:CTSRD-SOAAP/soaap