Avoid needless creation of unique strings in fmt!()

Only the first portion has to be owned, as it acts as the buffer for the
constructed string. The remaining strings can be static.
librustc: Add argument to allow choosing "linker"
Be more careful about the order in which we read the next field
during task annihilation, since it is easy to tread on freed memory.
rustpkg: Implement install command

    The install command should work now, though it only installs
    in-place (anything else has to wait until I implement RUST_PATH).

Also including:
    core: Add remove_directory_recursive, change copy_file

    Make copy_file preserve permissions, and add a remove_directory_recursive
    function.
tidy
rustpkg: Handle sysroot more correctly

In rustpkg, pass around sysroot; in rustpkg tests, set the sysroot
manually so that tests can find libcore and such.

With bonus metadata::filesearch refactoring to avoid copies.
core: Warning police
std: Warning police
syntax: Warning police
rustc: Warning police
add gitattributes and fix whitespace issues
rustpkg: Make code actually compile

oops.
auto merge of #6124 : catamorphism/rust/rustpkg, r=catamorphism

r? @graydon
auto merge of #6198 : luqmana/rust/linker-arg, r=graydon
auto merge of #6219 : dotdash/rust/fmt, r=graydon

Only the first portion has to be owned, as it acts as the buffer for the
constructed string. The remaining strings can be static.
auto merge of #6227 : graydon/rust/issue-6112-box-annihilator, r=graydon

during task annihilation, since it is easy to tread on freed memory.
auto merge of #6229 : catamorphism/rust/warning-police, r=catamorphism
auto merge of #6230 : thestinger/rust/whitespace, r=catamorphism

I just had `git apply` fix most of them and then did a quick skim over the diff to fix a few cases where it did the wrong thing (mostly replacing tabs with 4 spaces, when someone's editor had them at 8 spaces).
Reduce code bloat from managed allocations

In commit d7f5e43 "core::rt: Add the local heap to newsched tasks",
local_malloc and local_free have become rather big and their forced
inlining causes quite a bit of code bloat. Compile times for crates
affected by the bloat (e.g. rustc) improve, while others (e.g. libstd)
seem to be unaffected, so I guess the inlining doesn't gain us much.

Sizes:
               | librustc   | libsytax
---------------|–-----------|------------
with inlining  | 18,547,824 |  7,110,848
w/o inlining   | 15,092,040 |  5,518,608
auto merge of #6237 : dotdash/rust/reduce_bloat, r=brson

In commit d7f5e43 "core::rt: Add the local heap to newsched tasks",
local_malloc and local_free have become rather big and their forced
inlining causes quite a bit of code bloat. Compile times for crates
affected by the bloat (e.g. rustc) improve, while others (e.g. libstd)
seem to be unaffected, so I guess the inlining doesn't gain us much.

Sizes:
```
               | librustc   | libsytax
---------------|–-----------|------------
with inlining  | 18,547,824 |  7,110,848
w/o inlining   | 15,092,040 |  5,518,608