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 #16917 : nick29581/rust/cross-trait, r=pcwalton

Closes #15349

r? @pcwalton (or anyone else)