Add new `@SubclassMapping` for creating Downcast mapping.
When a parent mapping method is annotated with `@SubclassMapping`
it will now generate an instanceof check inside the parent mapping
and generate the subclass mappings if they are not manually defined.
There is also `SubclassExhaustiveStrategy` for controlling what MapStruct should do in case the target type is abstract and there is no suitable way to create it.