Don't allocate a string when calling println

Instead use format_args! to pass around a struct to pass along into std::fmt
auto merge of #9979 : alexcrichton/rust/print-no-alloc, r=huonw

Instead use format_args! to pass around a struct to pass along into std::fmt
Add a feature flag for ASM
auto merge of #9991 : LeoTestard/rust/asm-feature-gate, r=huonw

Fixes #9882
Note that the actual checking code is inside a if false in order to compile libstd properly.
libstd uses asm! in rt. If we put ```#[feature(asm)]``` in libstd, it fails to build at stage0 beacause the
asm feature is not known yet by the snapshot compiler.
We must wait that this PR arrives into the snapshot in order to actually activate the checking code.
auto merge of #9986 : thestinger/rust/float, r=cmr

copysign, ring, nearbyint, round
fix the new floating point intrinsics