[WIP] refactor: Drop the Controller directive

closes #919
closes #917
closes #915
Replaces #959 

See the commit comments for a detailed explanation of the changes and BC breaks

TODO:
- [x] investigate dart2js failures
- [x] Decide how to form children should be accessed (it is no more possible to add arbitrary keys to the context because we have switched from a `ScopeLocals` to an instance of the controller)
- [x] Once the previous point is solved, update the second commit comment with the change
- [x] fix one remaining issue with runZoned