feat(flush): add flush phase

Only for structural changes via `View` and `ViewPort`.
Adds `@DomMovedAware` annotation for directives that need
to know the element layout. Note that `diAttached` still exists and
is called earlier.

Migration guide: The change should be transparent for directives
that don’t need the layout information of the DOM. Those that do
need to use `@DomMovedAware`.

See `DESIGN.md` for details