Unsized types

Support unsized types using the `type` keyword. Use the usual built-in bounds checking rules and forbid in fields. Further checking required before it is safe for DST. Closes issue #12969.