ref #196 A subclass should work in place of an annotated superclass.

Currently when you register a subclass you register it with an annotationless TypeKey.
If you try to use this subclass in place of an annotated superclass (@Mapify, @Stringify, @Unindex, @Index) you get an exception.

This pull request makes sure when you register a subclass you register it for  every TypeKey of the superclasses and when you add a new typekey for a class then you register every subclass to those annotations too.

I needed the newly created translator in the translators map before the Translators.get() could put it in there so I add it directly in the ClassTranslatorFactory. I don't know the project well enough to find a better solution.