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.
Make build products depend on their target directories.

This is an attempt to address Issue #3326 by adding [*order-only*][1]
prerequsites of each build product on the directory where it is to go.
It is important that the prerequisites be order-only, since the
timestamp on a parent directory is not relevant to whether a product
is out of date; the parent directory merely needs to exist.

(This use case of generating target directories was provided as an
[example][2] of how order-only prequisites are used.)

[1]: http://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html

[2]: http://www.kolpackov.net/pipermail/notes/2004-January/000001.html
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.
core: Warning police
std: Warning police
syntax: Warning police
rustc: Warning police
add gitattributes and fix whitespace issues
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
rt: glob, globfree dummy function for android
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).
Fix syntax: had to use escaped $$ to have an effect after first expansion.
Fix another goof: consistently use parent directory of target for rule.

(I wonder if there's a better way to write this in the rule itself;
i.e. something like `$$(dirname $$@)`.  But for now this will do.)
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
Register snapshots