Model the output directory for source files generated by annotation processors as a `DirectoryProperty` and replace the convention mapping with a convention on the property. This change means that JavaCompile tasks added by the Java base plugin for a source set will be up-to-date on first load from the instant execution cache, and will generate source files to the correct location when they do happen to run.
Support resource creation in incremental annotation processors Allow resources to be created by incremental annotation processors using `Filer#createResource`. Allow resources to be created in the three currently existing output locations on `StandardLocation`: `SOURCE_OUTPUT`, `CLASS_OUTPUT`, and `NATIVE_HEADER_OUTPUT`.
A generated resource is uniquely identified by its `Location` and its path relative to that `Location`. A new type `GeneratedResource` is created to that effect. Data of that type is then plumbed through the existing annotation processing infrastructure, ultimately reaching `IncrementalCompilationInitializer` so that cleaning may be done.