librustc: Forbid `pub` or `priv` before trait implementations

r? @catamorphism (last commit is the important one)