Define rustc's host triple at compile time

This way a cross-compiled rustc's answer to host_triple() is correct. The return
value of host_triple() reflects the actual host triple that the compiler was
build for, not the triple the compiler is being built on
Un-ignore rusti/rustpkg tests on i686
auto merge of #6733 : alexcrichton/rust/issue-2400, r=brson

Most of the relevant information can be found in the commit messages.

r? @brson - I just wanted to make sure the make changes aren't completely bogus

This would close #2400, #6517, and #6489 (although a run through incoming-full on linux would have to confirm the latter two)
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.