Refactored make_absolute into functionality on the Path
Improved windows path handling support
Added is_restricted() to path
Mention rust tool in the tutorial
Check type when struct is matched against enum-like pattern

Previously check always succeeded because struct type was derived from
the matched expression, not the matched pattern.
Give the rust tool an own section in the tutorial.
Rewrited section about rust tool
Fix for issue 4875
use range assert when loading enum discriminant

Closes #4924
auto merge of #5040 : Kimundi/rust/incoming, r=graydon
add range assert when loading bools
auto merge of #5039 : alexcrichton/rust/issue-4875, r=catamorphism

It looks like the type for the whole pattern wasn't being written back, so when privacy tried to look it up everything died.
replace explicit loops with foldr
auto merge of #5044 : thestinger/rust/range, r=pcwalton

Closes #4924

There are some more `Load` calls that could use this, so it's not completely done yet.
vim improvements

1. Highlight new lifetime syntax
2. Visually distinguish `unsafe` keyword
3. Add a new file that highlights column 78, to warn when lines get too long
Created libcore/private/intrinsics.rs, which aims to contain every
rustc intrinsic. Several files in libcore have been changed to use
these intrinsics.
As of yet, none of the intrinsics are documented.
Changed a test to use intrinsics.rs and changed a few lines that were too long, had bad whitespace, etc.
etc: Suppress the enum variant instruction scheduling Valgrind issues. rs=#rust
auto merge of #5046 : sanxiyn/rust/struct-match, r=catamorphism

Previously check always succeeded because struct type was derived from the matched expression, not the matched pattern.

Fix #4849.
Don't perform swap when src == dst. #5041