Unfortunately processing annotations required generating new classes which turned out to be quite cumbersome to work with, especially when trying to publish an API. Therefor, the patch annotation retention is now `RUNTIME`.
BREAKING CHANGE: Various patch constructor signatures have changed.
This commit introduces an annotation processor for patches. Patches can use the `@Patch` instead of super constructor parameters.
BREAKING CHANGE: The manifest for patches has been removed, and the properties have been added to patches. Patches are now `OptionsContainer`. The `@Patch` annotation has been removed in favour of the `@Patch` annotation from the annotation processor.