Model COM class inheritence (help DRY-up code)

This PR attempts to remove duplication by modeling the COM class inheritance.

It works by exposing the vtable on the base IUnknown class as an opaque *interface{}.  Each COM class then implements a VTable() func that casts the opaque pointer to that class's specific vtable type.  The vtables themselves embed their parent class's vtable definition, which removes duplication.

The result is the ability to extend parent vtables without re-listing the parent methods, and the ability to call parent methods without re-defining the methods.