Support for lifecycle methods on type being build with builders

Currently we only support lifecycle methods on for a single type.

This issue is to expand that so the lifecycles are invoked for the type being build.

Example. We have Person with PersonBuilder.

The following lifecycle methods are / should be invoked:

  • @BeforeMapping with no parameters
  • @BeforeMapping with @TargetType Person
  • @BeforeMapping with @TargetType PersonBuilder
  • @BeforeMapping with @MappingTarget PersonBuilder
  • @AfterMapping with no parameters
  • @AfterMapping with @TargetType Person
  • @AfterMapping with @TargetType PersonBuilder
  • @AfterMapping with @MappingTarget Person
  • @AfterMapping with @MappingTarget PersonBuilder
  • @AfterMapping with @MappingTarget PersonBuilder and returning Person