Add support for Subclasses, Interfaces, Abstract Classes as POJOs

Are we sure that all the TypeSerializers are implementing hash() and equals() properly?