This patch changes the variant even in pre-C++2b.
It should not break anything, only allow use cases that didn't work previously.
Previous standards didn't disallow this AFAIK.
But I'm OK to make this change C++2b-only.
That's pretty much a work in progress, but I'd like to have your input on the following:
* What else should be tested?
* Is there a way to avoid __as_variant? Should it be a goal?
* `__as_variant` is used in `__visitation::__variant::__visit_alt`, but I haven't used it in `__visitation::__variant::__visit_alt_at`.
That's because it is used only in `__visit_value_at`, which in turn is always used on variant specializations (that's in comparison operators). I have added tests for that though.
* https://wg21.link/P2162