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). which in turn is always used on variant specializations (I have added tests for that's in comparison operators) though.