Merge branch 'stable-3.1' into stable-3.2

* stable-3.1: (38 commits)
  docker: make sure to cleanup containers before force exit
  fixup! Add TaskTree definitions more directly
  fixup! refactor predicate cache into its own class
  fixup! Add support for tasks-factory and names-factory keywords
  fixup! Support outputting elapsed evaluation time on tasks
  fixup! Revert "Revert "plugin:task Adds support for names-factory of type change""
  Add a Container.toString() to help when debugging.
  Harden inputs to basename
  Add Zuul postflight publish job
  Pass around Task parent instead of its fields
  Fix to alter change context for TaskChangeFactories
  Add tasks-factories static properties tests
  Add a names-factory STATIC Properties test
  Add ensures to the task tests setups
  Split the task preload properties test out
  Split the task preload optional test out
  Split the append preloaded subtasks test out
  Split the task override preload pass/fail tests out
  Split the task preload hints tests out
  Split the task preload preload test out
  ...

Change-Id: I68fefcfe1a0f96fee6d0bcea18060852291f973d