librustc: Remove `&` inside `@` from borrowck/check_loans.
librustc: Forbid `&` pointers (other than `&'static`) inside `@` boxes.

This makes custom borrowing implementations for custom smart pointers
sound.
librustc: Remove `pub extern` and `priv extern` from the language.

Place `pub` or `priv` on individual items instead.
auto merge of #7896 : pcwalton/rust/pub-extern, r=pcwalton

r? @nikomatsakis