This patch changes the variant even in pre-C++2b.
It should not break anything, only allow use cases that didn't work previously.
`__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.