Change class generation to locate services based on the annotation attached to the property getter. This means that for artifact transforms, the workspace is not available via `@Inject` and the dependencies are not available via `@Workspace`.
Add a `@Workspace` annotation, which allows the workspace location, or output directory, to be injected into an artifact transform. This is used on `ArtifactTransform` to set the `outputDirectory` property. The plan is that this will also work for any other artifact transform types we might add later.
In this commit, the `@Workspace` annotation is basically just treated the same way as `@Inject` and the workspace is passed as a service of type `File`. These will be separated in a later commit, so that `@Workspace` will supply only the workspace, and `@Inject` will supply only services.