Adopt the latest Gradle APIs

There are three main tasks here:

  • // TODO: implement using the InputChanges api
  • // TODO level 1: implement SpotlessExtension::createFormatTasks, but using config avoidance
    // TODO level 2: override configure(String name, Class<T> clazz, Action<T> configure) so that it is lazy

Each TODO can be implemented independently, and should probably be in a separate PR (the bottom two could maybe be in one PR). As detailed in #600, this code is tested by :plugin-gradle:modernTest, and is not yet being used by end-users, though it is possible to opt-in with -PspotlessModern=true.

PRs welcome!