Merge branch 'stable-3.1' into stable-3.2

* stable-3.1: (49 commits)
  Add change number to task output
  Only copy required folders for testing
  Add missing copyright/license header
  Use a bash associative array to speedup task tests
  plugins/task: Move TaskExpression iteration to Preloader
  Add bazel rule for junit tests
  Introduce TaskKey, SubSectionKey and FileKey
  plugins/task: Fix cache name in Preloader
  Only reload nodes when needed
  Skip re-expanding properties for local properties
  Use a lazy loading task property expansion model
  Refresh TaskTree.Nodes when getting them
  Cache preloaded tasks
  Rename a bunch of TaskTree addNode() methods
  Add preload-task to external file tests
  Add Root Preload tasks-factory test
  Create a TaskExpression with unit tests
  Do not modify definition during preload
  Return Optional<Task> in Task.Config
  Make task config collection fields immutable

Change-Id: I8686d0ea61437af3ee648ced15ff8789e02e6ec4