Fix an ICE when dereferencing types which cannot be dereferenced
syntax: de-mode and prepare for de-modeing rustc
rustc: de-mode + fallout from libsyntax changes
Assorted fixes from de-modeing rustc/syntax (rusti, rustdoc, fuzzer, rustpkg)
core: clean up tests (mostly unused unsafe blocks)
std: clean up tests (mostly unused unsafe blocks)
auto merge of #5965 : alexcrichton/rust/issue-4364, r=pcwalton

This closes #4364. I came into rust after modes had begun to be phased out, so I'm not exactly sure what they all did. My strategy was basically to turn on the compilation warnings and then when everything compiles and passes all the tests it's all good.

In most cases, I just dropped the mode, but in others I converted things to use `&` pointers when otherwise a move would happen.

This depends on #5963. When running the tests, everything passed except for a few compile-fail tests. These tests leaked memory, causing the task to abort differently. By suppressing the ICE from #5963, no leaks happen and the tests all pass. I would have looked into where the leaks were coming from, but I wasn't sure where or how to debug them (I found `RUSTRT_TRACK_ALLOCATIONS`, but it wasn't all that useful).