Introduce support for running phased actions This commit introduces the ability of running multiple build actions in different phases of the build. These actions are passed by the client through the tooling api.
With this commit, a single action can be added to each one of the supporting phases (after projects are loaded, after projects are evaluated and after tasks are run).
This feature allows improvements like running actions that call a model builder modifying the graph tasks, and then it is possible to first fetch a model and then execute tasks, in this order. e.g. Android Studio sync + source generation.