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.
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
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
auto merge of #5043 : brson/rust/swap, r=brson

r?
auto merge of #5049 : bstrie/rust/vim, r=catamorphism

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
librustc: Get rid of structural records save for front/test.rs.
Fix fallout in rusti & rustpkg.
librustc: tidy
Merge
Fix flipped tuple that was causing all that pain
Fix vdef pattern
Merge
auto merge of #5066 : catamorphism/rust/luqmana-derecording, r=catamorphism

Most work done by @luqmana and @pcwalton - I just rebased.
librustc: Separate most trait bounds with '+'. rs=plussing