This commit introduces an option to control the way components are pushed into the stack.
When pushing components into a stack, they are pushed the moment they are measured.
If `waitForRender` is true, components will be pushed only after the initial render.
api:
```js
options: {
animations: {
push: {
waitForRender: true
},
showModal: {
waitForRender: true
}
}
}
```
[Breaking[ Modal refactor
* [Breaking] Showing modal removes the previously visible ViewController from hierarchy
* Modal implementation does not rely on Dialog
* Modal view is added to `content` layout
* Overlay is added to `root` layout, on top of the application's content
* Introduce StackControllerBuilder
* Show modal with animation
* Dismiss modal with animation
* Add previous modal at index 0
* Add root at index 0
* dismissAllModals dismisses only top modal with animation