Further refactor optimization pass handling

This refactors pass handling to use the argument names, so it can be used
in a similar manner to `opt`. This may be slightly less efficient than the
previous version, but it is much easier to maintain.

It also adds in the ability to specify a custom pipeline on the command
line, this overrides the normal passes, however. This should completely
close #2396.
auto merge of #6799 : Aatch/rust/pass-refactor, r=graydon

This refactors pass handling to use the argument names, so it can be used
in a similar manner to `opt`. This may be slightly less efficient than the
previous version, but it is much easier to maintain.

It also adds in the ability to specify a custom pipeline on the command
line, this overrides the normal passes, however. This should completely
close #2396.
librustc: Redo the unsafe checker and make unsafe methods not callable from safe code
libsyntax: Make `drop` no longer a keyword
libsyntax: Stop parsing mutable fields
librustc: Stop reexporting the standard modules from prelude.
librustc: add some imports to back/passes.rs rs=burningtree
test: Fix problem with check-fast. rs=burningtree
etc: Fix more check-fast breakage. rs=burningtree
Remove all of the `#[inline(always)]` attributes from bigint