Merge branch 'stable-2.16' into stable-3.0

* stable-2.16: (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: I4908973e957bba36f81ac2d7c836320faba18b35