Forbid the Sized bound on unsized types

closes #16800
gensym each test re-export module individually

Fixes #16597
Address review comments, add tests
Rename `RawPtr::to_option()` to `RawPtr::as_ref()`

As outlined in

  https://aturon.github.io/style/naming/conversions.html

`to_` functions names should only be used for expensive operations.
Thus `to_option` is better named `as_option`. Also, putting type
names into method names is considered bad style; what the user is
really trying to get is a reference. This `as_ref` is even better.

Also, we are missing a mutable version of this method. So add a
new trait `RawMutPtr` with a corresponding `as_mut` methode.

Finally, there is a bug in the signature of `to_option` which has
been around since lifetime elision: originally the returned reference
had 'static lifetime, but since the elision changes this become
the lifetime of the raw pointer (which does not make sense, since
the pointer lifetime and referent lifetime are unrelated). Fix
the bug to return a reference with a fresh lifetime (which will
be inferred from the calling context).

[breaking-change]
Second approach - using type contents
ignore-pretty the test
Fix MIPS target

Add missing liblibc constants
Fix ICE with static DST coercion

Closes #16911
Prevent failure when using fail! with invalid utf8.

Closes #16877.
Schedule cleanup for &* on fat owned pointers

For example `let _x: &Trait = &*(box Foo as Box<Trait>);`. There was a bug where no cleanup would be scheduled by the deref.

No test because cleanup-auto-borrow-obj.rs is a test for this once we remove trait cross-borrowing (done on another branch).
Remove cross-borrowing for traits.

Closes #15349

[breaking-change]

Trait objects are no longer implicitly coerced from Box<T> to &T. You must make an explicit coercion using `&*`.
auto merge of #16892 : andrew-d/rust/andrew-fix-test-reexports, r=sfackler

Fixes #16597

I'm not 100% sure this is the correct way to handle this - but I wasn't able to find a better way without doing way more refactoring of the code that I was comfortable with.  Comments and criticism are appreciated :smile:
auto merge of #16917 : nick29581/rust/cross-trait, r=pcwalton

Closes #15349

r? @pcwalton (or anyone else)
Fix ICE when casting `&[T]` to `*const [T]`

Closes #16947
Handle custom deref returning fat pointers

Closes #16930
Enable a test for correct treatment of Sized?
auto merge of #16934 : nick29581/rust/dst-bug-6, r=pcwalton

Closes #16911 

r?
auto merge of #16940 : treeman/rust/fail-non-utf8, r=pnkfelix

Closes #16877.
auto merge of #16956 : nick29581/rust/unsized-test-1, r=alexcrichton

I landed this disabled, but it now passes since @pcwalton implemented RFC 11

r?
auto merge of #16634 : apoelstra/rust/to-option-fix, r=aturon

As outlined in

  https://aturon.github.io/style/naming/conversions.html

`to_` functions names should only be used for expensive operations.
Thus `to_option` is better named `as_option`. Also, putting type
names into method names is considered bad style; what the user is
really trying to get is a reference. This `as_ref` is even better.

Also, we are missing a mutable version of this method.

Finally, there is a bug in the signature of `to_option` which has
been around since lifetime elision: originally the returned reference
had 'static lifetime, but since the elision changes this become
the lifetime of the raw pointer (which does not make sense, since
the pointer lifetime and referent lifetime are unrelated). We fix
the bug to return a reference with a fresh lifetime which will be
inferred from the calling context.

[breaking-change]