Replace `BuildDependenciesVisitor` with `TaskDependencyResolveContext` so that the same visitor type is used to visit the build dependencies of a configuration/variant/artifact as is used to visit the build dependencies of other things.
Avoid locking the target project of project dependencies during task execution.During work graph calculation, add an action that runs immediately after the producing task of an artifact completed that caclculates the dependency resolution metadata for that artifact. This happens before the consuming tasks are started, and so is available without locking when those tasks execute. Previously this calculation was done by consuming tasks, and they would need to lock the target project to do this.This strategy works only for those tasks that declare that they will need these files (e.g. are declared as inputs in some form). For tasks that do not declare these inputs (possibly because there is no easy way to do so yet), the action is not added and the locking will still occur when the consuming task executes.The implementation bolts a new concept onto the task nodes, as an increment towards making these actions real nodes in the graph that can be scheduled in the normal way.
Rework task dependency inference so that `Provider` implementations use the same `TaskDependencyContainer` interface that most other things use to declare their producer task to the task resolution infrastructure, rather than having special knowledge sprinkled around various places.Cleaned up a bunch of `Provider` and `Property` implementations so that more logic is reused rather than reimplemented.
Support propagation of the producer task for provider instances that are created using `Provider.map()`.Now, when a provider represents a task or task output, whether mapped or not, that task is taken as the producer of the value and the mapping function is not called. Otherwise, the value of the provider is unpacked and resolved, as it previously was.Rework the protocol by which providers communicate their build dependencies to consumers.