Add `apply false` option to `plugins` blockThis solves two use cases at once:- only using some classes from a plugin without applying it- applying a plugin to sub-projects without applying it to the root project
Allow applying plugins to subprojects using new DSLThis change adds new `subprojects` and `allprojects` methods to the `plugins`DSL, which allow users to apply plugins to multiple subprojects at once.The plugins are resolved in the context of the parent project and put onthe parent's classpath. This ensures that the parent can cross-configure itschildren. A side-effect is that unrelated subprojects will see those pluginclasses too, even though they are not applied to them.The `plugins` block is no longer backed by an AST transformation, but isnow compiled, exactly like the `buildscript` and `pluginRepositories` blocks.This will give users greater flexibility to conditionally apply plugins in thefuture. Currently no access is granted to any methods outside of the `plugins`API though.