Implement lazy nested task chains

This is required if a task chain itself already requires the computation
result of a task in the task chain. This happens for instance if the
task chain adds tasks based on workspace content, but the task chain is
run on an empty workspace and the first task populates projects.

Change-Id: Ifce327812ce9dad109ca4771f01d6ecae03eebf5
6 files changed