add intrinsics for checked overflow add/sub/mul
make error messages conform to style guide
syntax: Shrink enum Token and enum nonterminal

`enum Token` was 192 bytes (64-bit), as pointed out by pnkfelix; the only
bloating variant being `INTERPOLATED(nonterminal)`.

Updating `enum nonterminal` to use ~ where variants included big types,
shrunk size_of(Token) to 32 bytes (64-bit).

I am unsure if the `nt_ident` variant should have an indirection, with
ast::ident being only 16 bytes (64-bit), but without this, enum Token
would be 40 bytes.

A dumb benchmark says that compilation time is unchanged, while peak
memory usage for compiling std.rs is down 3%

Before::

    $ time ./x86_64-unknown-linux-gnu/stage1/bin/rustc --cfg stage1 src/libstd/std.rs
    19.00user 0.39system 0:19.41elapsed 99%CPU (0avgtext+0avgdata 627820maxresident)k
    0inputs+28896outputs (0major+228665minor)pagefaults 0swaps
    $ time ./x86_64-unknown-linux-gnu/stage1/bin/rustc -O --cfg stage1 src/libstd/std.rs
    31.64user 0.34system 0:32.02elapsed 99%CPU (0avgtext+0avgdata 629876maxresident)k
    0inputs+22432outputs (0major+229411minor)pagefaults 0swaps

After::

    $ time ./x86_64-unknown-linux-gnu/stage1/bin/rustc --cfg stage1 src/libstd/std.rs
    19.07user 0.45system 0:19.55elapsed 99%CPU (0avgtext+0avgdata 609384maxresident)k
    0inputs+28896outputs (0major+221997minor)pagefaults 0swaps

    $ time ./x86_64-unknown-linux-gnu/stage1/bin/rustc -O --cfg stage1 src/libstd/std.rs
    31.90user 0.34system 0:32.28elapsed 99%CPU (0avgtext+0avgdata 612080maxresident)k
    0inputs+22432outputs (0major+223726minor)pagefaults 0swaps
Implement an `address_insignificant` attribute

This can be applied to statics and it will indicate that LLVM will attempt to
merge the constant in .data with other statics.

I have preliminarily applied this to all of the statics generated by the new
`ifmt!` syntax extension. I compiled a file with 1000 calls to `ifmt!` and a
separate file with 1000 calls to `fmt!` to compare the sizes, and the results
were:

fmt           310k
ifmt (before) 529k
ifmt (after)  202k

This now means that ifmt! is both faster and smaller than fmt!, yay!
Try to fix mac valgrind bot by disabling thread-heavy activities.
rustc: Obey RUST_MIN_STACK env var

A lot of people are hitting stack overflows in rustc. This will make it
easier to experiment with stack size.
vec: optimize the Add implementation

before:

test add ... bench: 164 ns/iter (+/- 1)

after:

test add ... bench: 113 ns/iter (+/- 2)
str: optimize `with_capacity`

before:

test bench_with_capacity ... bench: 104 ns/iter (+/- 4)

after:

test bench_with_capacity ... bench: 56 ns/iter (+/- 1)
move `strdup_uniq` lang item to std::str
Forbid pub/priv where it has no effect

Closes #5495
Merge branch 'zero-unit-inline' of https://github.com/stepancheg/rust into rollup
Merge branch 'checked' of https://github.com/thestinger/rust into rollup
Merge branch 'vector-add' of https://github.com/thestinger/rust into rollup
Merge branch 'expect_found' of https://github.com/kud1ing/rust into rollup
Merge branch 'shrink-token' of https://github.com/blake2-ppc/rust into rollup

Conflicts:
	src/libsyntax/ext/tt/macro_parser.rs
	src/libsyntax/parse/token.rs
Merge branch 'unnamed-addr' of https://github.com/alexcrichton/rust into rollup
Merge branch 'less-priv-again' of https://github.com/alexcrichton/rust into rollup
Merge branch 'mac-valgrind-thread-fixes' of https://github.com/graydon/rust into rollup
Merge branch 'rustc-stack' of https://github.com/brson/rust into rollup
auto merge of #8448 : erickt/rust/rollup, r=alexcrichton

This includes the following PRs:

#8408: r=aatch
#8412: r=alexcrichton
#8413: r=cmr
#8421: r=thestinger
#8423: r=bstrie
#8424: r=brson
#8427: r=thestinger