There are rules that have to be applied only once, e.g. every Remember
and Apply Initially rule, as well rules that need to configure the client,
e.g. size, etc. In the best scenario the compositor would evaluate such
rules when the client is about to be mapped.
This change limits window rules only to xdg-shell clients because right
now only this protocol lets compositors intervene in the client
initialization process. Also, it makes things a bit easier for us on the
compositor side.
Even though xdg-shell satisfies most of ours requirements to implement
window rules, it's still not perfect. For example, if the client is about to be
mapped for the second time, the compositor needs somehow to configure
it, otherwise the next frame may be not "perfect".