Add a mechanism to register injection annotations globally and use this to validate that annotations are not attached to types where they are not supported. For example, fail when `@Workspace` is attached to a task property getter.

Improve diagnostics from `ExecutionResult` fixture when expected text is missing, by throwing a `ComparisonFailure` exception. IDEA will provide a diff view for this kind of exception, which makes debugging much easier.

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`.