rustc: Give a hint when a static method call has fewer than expected type parameters

In this case, it's likely to be that the user forgot the `self` type, so
say so.

Closes #4096
Implement formatting arguments for strings and integers

Closes #1651
Define integer formats for all widths

Closes #1653
Correct the padding on integer types for formatting
Explain what ifmt! is all about
Fix freezing of @mut Objects when passing as argument
Reborrow even when passing &Object to &Object, so as to permit freezing
Add `f` formats to `ifmt!`

Currently the work just the same as the old `extfmt` versions
auto merge of #8446 : alexcrichton/rust/ifmt++, r=graydon

This includes a number of improvements to `ifmt!`

* Implements formatting arguments -- `{:0.5x}` works now
* Formatting now works on all integer widths, not just `int` and `uint`
* Added a large doc block to `std::fmt` which should help explain what `ifmt!` is all about
* Added floating point formatters, although they have the same pitfalls from before (they're just proof-of-concept now)

Closed a couple of issues along the way, yay! Once this gets into a snapshot, I'll start looking into removing all of `fmt`
auto merge of #8497 : nikomatsakis/rust/improvements-to-object-coercion, r=pcwalton

While looking over the code for object coercion, I realized that it wasn't quite handling freezing and reborrowing correctly. Tweak the code, adding tests for the relevant cases. 

r? @pcwalton
auto merge of #8477 : catamorphism/rust/issue-4096, r=msullivan

r? @msullivan ...e parameters

In this case, it's likely to be that the user forgot the `self` type, so
say so.

Closes #4096