Use the method of a base if it's unset

After applying this PR, if you set a callback to `NULL`, the system will search for implementation i base classes.
Deinit and some other special methods are not affected by this.
You should add a note why we stop on the `WS_OBJECT_TYPE_ID_BUFFER` type identification! I mean, it is clear now, but maybe not later.