style: Handle disjoint selectors in the selector map.
style: Handle disjoint selectors in the selector map.

This way, something like:

  *:where(.foo, .bar)

Will end up twice on the selector map, just as if you would've written
.foo, .bar.

But we're a bit careful to not be wasteful, so:

  .foo:where(div, span)

Will still end up using the .foo bucket.

It needs a bit of borrow-checker gymnastics to avoid cloning the entry
in the common path. It's a bit gross but not too terrible I think.

Differential Revision: https://phabricator.services.mozilla.com/D71457

KiChjang/servo,splav/servo,KiChjang/servo,KiChjang/servo,splav/servo,KiChjang/servo,splav/servo,splav/servo,splav/servo,KiChjang/servo,KiChjang/servo,splav/servo,KiChjang/servo,KiChjang/servo,KiChjang/servo,splav/servo,splav/servo,splav/servo,KiChjang/servo,splav/servo