Rewrite rusti
auto merge of #7070 : alexcrichton/rust/rusti++, r=graydon

More descriptive comments can be found throughout the code, but the bulk of this is that it addresses a vast number of issues with the old rusti model.

Closes #6772, #5675, #5469, and #6617