Update coherence rules to be more flexible for `impl Trait for Type`
libsyntax: Fix `static` in pretty printer. rs=burningtree
auto merge of #5515 : nikomatsakis/rust/issue-5514-flexible-coherence-rules, r=pcwalton

See issue #5514

r? @pcwalton
Moved float str buffer constants to the strconv module
pre-rebase commit
Switched over a bunch of splitting funktions to non-allocating iterators