view: implement `cascade` placement policy
Adds following settings:
<placement>
<policy>cascade</policy>
<cascadeOffset x="40" y="30" />
</placement>
"Cascade" policy places a new window at the center of the screen like
"center" policy, but possibly shifts its position to bottom-right so the
new window doesn't cover existing windows.
The algorithm is copied from KWin's implementation:
https://github.com/KDE/kwin/blob/
df9f8f8346b5b7645578e37365dabb1a7b02ca5a/src/placement.cpp#L589
Also added some helper functions to manipulate `wlr_box`.