Forbid unsized structs which are non-instantiable

Closes #16977 

r?
The English in error messages is abbreviated, so it's slightly odd grammar. To my ears, omitting the 'a' sounds better. Even with it, the English is not great (it should be something like 'The struct Foo cannot be instantiated because its size can never be statically known by the compiler'),