Make @unboxed apply to a whole variant only
Why
@unboxed on a single constructor made that constructor untagged and left the others tagged. Such mixed variants missed the checks of untagged ones (#9020) and interface and coercion checks (#9038), and their matches crashed or picked the wrong case. Public code uses the attribute on every payload constructor or on the only one, which the type-level @unboxed says, but no code mixes tagged and untagged cases.
@unboxed on a constructor is an error that says to write it on the type. The layout of a variant is untagged exactly when its type is @unboxed, so check_invariant no longer considers tagged and untagged blocks together, the type's @unboxed is no longer copied onto constructors, and process_untagged, a twin of has_untagged, is gone.
addedDiagnostic @unboxed on a constructor
type t = | @unboxed A(int) | B({x: int}) | Cdiagnostic
addedDiagnostic @unboxed on a single-field inline record constructor
type t = | @unboxed A({x: int})