Implement grid resize
Grid resize is window resizing aligned to a grid. This allows to precisely tile windows to taste. Grid resize can be triggered by window menu or mouse button 9. This feature depends on compositing.
UPDATE: Prefer clientConstrainPos() and clientReconfigure() over clientMaxSpace() and clientConfigure(). Do not grid resize fullscreen clients and clients w/o XFWM_FLAG_HAS_RESIZE | XFWM_FLAG_IS_RESIZABLE. Apply OPACITY_RESIZE during grid resize.
UPDATE 2: Hide grid window from the window manager (override redirect). Allow grid resize during initial window placement triggered by Shift+Control modifiers.
UPDATE 3: With grid window placement, we need to update DisplayInfo timestamp, otherwise order of events may mess up. Do grid placement with active compositor, only. Improve readability of gridResizeEventFilter().