Partially de-vec-mut librustc
RIMOV core::run
RIMOV core::rand
RIMOV core::io
RIMOV core::hash
RIMOV core::vec

Also remove as many uses as possible of vec::cast_to_mut and
cast_from_mut
auto merge of #4908 : bstrie/rust/rimov3, r=pcwalton

This patch finishes removing inner vector mutability from the vast majority of the compiler. Exceptions:

* core::dvec: ideally this entire type will be able to be replaced by `~[]`, but Niko asked me to hold off on removing Dvecs until he makes some fixes to borrowed pointers. 
* liveness: liveness.rs is an impenetrable neutron star of deprecated semantics.
* compile-fail: I'm not sure if a lot of these tests are testing inner mutability or mutability in general. I figure that RIMOVing this folder should wait until this syntax is removed from the parser.

I also took this chance to remove many of the inner-mutability-related functions from core::vec, or as many uses of those functions as possible where still necessary. consume_mut and append_mut have been axed. cast_to_mut and cast_from_mut are still needed in a few places.
libsyntax: Pretty print using the new impl syntax. r=brson
auto merge of #4884 : pcwalton/rust/pretty-print-new-impl-syntax, r=pcwalton

r? @brson
Remove die!, raplace invocations with fail! Issue #4524 pt 3