librustc: Redo the unsafe checker and make unsafe methods not callable from safe code
auto merge of #6708 : pcwalton/rust/unsafe-checking, r=nikomatsakis

r? @nikomatsakis