In __newindex metamethods of each Class detect if
a metamethod is assigned. In that case, propogate assignment
to all child classes that do not overwrite the metamethod.
Track set of metamethods each class defines itself.
On subclassing, copy all parent metamethods to child.
Benefits of this approach:
* Objects only have metamethods when they are, in fact, defined.
Ignoring overhead, the problem with stubs is that other libraries,
seeing a stub metamethod, could try to call it and get an error
if it's missing in the class. E.g. various deep comparison functions
often try to detect and use __eq.
* Non-function metafields such as __metatable can be used.
* Less overhead when using metamethods (but more when defining them).