Improve layout times of Workspace and WindowPreviews

Another round of profiling and measuring times spent in vfunc_allocate(), this time the Workspace class and WindowPreviews.

Kind of expectable, but the largest gains were measured when moving WindowPreviewLayout and parts of WindowPreview to C, it's a tradeoff but I think it makes sense to move these to C since the implementations are not that complex and we have one instance for each window, so things slow down quickly.

In total, this MR reduces the time spent in vfunc_allocate() of Workspace from 3.2 to 1.0 ms on average when opening/closing the overview with 20 open windows.

Edited by Jonas Dreßler

Merge request reports