rustc: implement a `#[no_implicit_prelude]` attribute.

It disables the insertion of `use std::prelude::*;` into the top of
all the modules below the item on which it is placed (including that
item itself).
auto merge of #7844 : huonw/rust/no-implicit-prelude, r=alexcrichton

It disables the insertion of `use std::prelude::*;` into the top of
all the modules below the item on which it is placed (including that
item itself).

(Similar to GHC's `-XNoImplicitPrelude`.)